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.
创建一个名为link2cdr的database 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 [email protected];
为其他用户或者当前用户的对象建立同义词,同义词可以指向表、视图、过程、函数、包和序列。
CREATE SYNONYM syn_tab FOR [email protected];
建立同义词后,可以使用如下访问方式:
SELECT t.tname FROM syn_tab t;
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;