Oracle同义词和DBLink关联

                                             步骤相关说明

基于Oracle11g

1.运行环境说明

两个数据库(如Oracle 11g,其他也可),以下称为目标库,源库,创建database link后需要访问的库为目标库。

    目标库为:10.17.0.206:1521/YLZCDR

    源库为:10.17.0.42:1521/orcl

1.1赋予权限。

创建database link之前,我们需要判断,登陆的用户是否具备创建database link 的权限,所以我们执行以下的语句(用SD_JCPT用户登陆源库):

 

-- 查看SD_JCPT用户是否具备创建database link 权限

SELECT * FROM user_sys_privs WHERE PRIVILEGE LIKE UPPER('%DATABASE LINK%') AND USERNAME='SD_JCPT';

 

如果查询有返回行,则表示具备创建database link权限,否则,则需要使用sys登陆源库为SD_JCPT用户赋予创建权限。

 

-- wangyong用户授予创建dblink的权限

GRANT CREATE PUBLIC DATABASE LINK TO SD_JCPT;

此时,再执行上面查看是否具备权限的sql语句,会发现有返回行,表示SD_JCPT这个用户已经具备创建database link的权限。

1.2 创建database link

 create [public] database link dababaseLinkName [connect to user identified by password] using connectString.

创建一个名为link2cdrdatabase link

-- 注意一点,如果密码是数字开头,用“”括起来

CREATE PUBLIC DATABASE LINK link2cdr CONNECT TO SD_JCPT IDENTIFIED BY "SD_JCPT" USING '10.17.0.206:1521/YLZCDR';

2.为database link使用同义词synonym

create [public] synonym [schema.]synonymName for [schema.]object[@dblink] --public表示创建一个公共同义词,默认是私有的。@dblink表示创建的是远程数据库的同义词,dblink是远程数据库链接的名称。

比如针对查询目标库所有表使用同义词

SELECT * FROM tab@Link2cdr;

Oracle同义词和DBLink关联_第1张图片

 

为其他用户或者当前用户的对象建立同义词,同义词可以指向表、视图、过程、函数、包和序列。

CREATE SYNONYM syn_tab FOR tab@Link2cdr;

建立同义词后,可以使用如下访问方式:

SELECT t.tname FROM syn_tab t;

Oracle同义词和DBLink关联_第2张图片

 

3.删除SYNONYM和database link

删除数据库链接:

drop [public] database link databaseLinkName;
--默认是删除私有的数据库链接。

删除同义词:

Sql代码 drop [public] synonym [schema.]synonymName
-- public表示删除一个公用同义词,如果不指定则默认是删除私有同义词,当对应的私有同义词不存在时则报错。

-- 删除database link

DROP PUBLIC DATABASE LINK link2cdr;

-- 删除同义词

DROP SYNONYM syn_tab;

 

你可能感兴趣的:(工作日常,Oracle)