Oracle在进行跨库访问时,可以通过创建DBLINK实现,首先了解下环境:在tnsnames.ora中配置两个数据库别名:orcl(用户名:wangyong 密码:1988)、orcl2(用户名:wangyong 密码:123456),在orcl中创建DBLINK来访问orcl2
赋予权限
在创建DBLINK之前,我们需要判断,登陆的用户是否具备创建DBLINK的权限,所以我们执行以下的语句(用wangyong用户登陆orcl)
1
2
3
-- 查看wangyong用户是否具备创建DBLINK权限
select * from user_sys_privs where privilege like upper('%DBLINK%')
AND USERNAME='WANGYONG';
如果查询有返回行,则表示具备创建DBLINK权限,否则,则需要使用sys登陆orcl为WANGYONG用户赋予创建权限
1
2
-- 给wangyong用户授予创建dblink的权限
grant create public DBLINK to wangyong;
此时,再执行上面查看是否具备权限的SQL语句,会发现有返回行,表示WANGYONG这个用户已经具备创建DBLINK的权限
创建DBLINK
-
通过PLSQL图形化创建
-
通过sqlplus中的SQL语句创建
1 2 3
-- 注意一点,如果密码是数字开头,用“”括起来 create public DBLINK TESTLINK2 connect to WANGYONG identified by "123456" USING 'ORCL21'
1 2 3 4 5 6 7 8 9
-- 没有在tnsnames.ora中配置连接时使用下面的语句创建DBLINK CREATE DBLINK 'DBLINK名字' CONNECT TO '用户名' IDENTIFIED BY '密码' USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS =(PROTOCOL = TCP)(HOST = 数据库IP地址)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = 服务名)) )';
这样,就完成了简单database简单的创建
创建同义词
对于链接字符串,还可以创建同义词代替,使用起来会稍微省点事
1
2
-- 创建同义词
create synonym TESTSYNONYM FOR company@TESTLINK1;
那么查询、插入、修改、删除中可直接用WYSYNONYM
代替company@TESTLINK1
即可,例如查询语句可改成如下方式
1
2
-- 查询ORCL2中WANGYONG用户的表COMPANY
SELECT * FROM TESTSYNONYM order by id