以下使用oracle数据库自带的scott用户来进行说明和测试。
1、有两个数据库orcl1和orcl,我们现实现通过DBLINK,在orcl1数据库scott用户中连接orcl数据库的scott用户。
2、第一步我们需要登陆orcl1数据库的scott用户下,查看其是否具有创建DBLINK的权限:
select * from user_sys_privs where privilege like upper('%DATABASE LINK%');
图上图所示,查询结果显示:没有权限创建DBLINK。
3、我们登陆orcl1数据库的sys用户,对 orcl1数据库的scott用户授权:
grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to scott;
授权后,再次进行查询:
select * from user_sys_privs where privilege like upper('%DATABASE LINK%');
如上图所示,显示orcl1数据库下的scott用户已经具有创建DBLINK的权限。
4、在orcl1数据库的scott用户下,创建DBLINK:
create public database link MYDBLINK
connect to scott identified by tiger
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.17.254)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';
说明:MYDBLINK是我们创建的DBLINK的名字;
SERVICE_NAME是我们要连接到的数据库,这里我们要连接到的数据库是orcl;
scott和tiger是我们要连接到的orcl数据库中的用户和密码;
HOST是orcl数据库所在机器的ip地址。
5、测试,我们在orcl1数据库中scott用户下,查询orcl数据库中scott用户下面的dept表(有点拗口):
select*from dept@MYDBLINK;