1、首先要有创建Database Link 的权限。可通过语句查看当前用户是否有权限:
SELECT * FROM USER_SYS_PRIVS;
如果没有权限,使用系统管理员用户登陆后给当前用户授权:
GRANT CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK TO user;
(注意:PUBLIC 加了之后表示公用的,不加 PUBLIC 表示只有当前用户可用)
2、确保网络畅通,即数据库1所在的网络能够连接到数据库2端口。如果创建双向dblink则需要开通两端数据库端口,如果单项dblink则只需要开通源端到被访问的目标端数据库端口即可。如果dblink创建使用物理IP则只需要开通到集群任意一个节点的物理IP端口即可,如果使用scanIP还需要开通俩个vip端口,不然仅通过scanIP dblink无法飘到虚拟ip的端口。
3、创建Dblink,这里有两种方法:一种是直接修改tnsnames.ora文件,一个是在创建Dblink时直接加数据库连接。
方法一:修改tnsnames.ora文件编辑tnsnames.ora文件,在文件末尾追加数据库2的链接。
DBLINK1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 16.0.xx.xxx)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = EAST)
)
)
创建Dblink:
CREATE PUBLIC DATABASE LINK DBLINK_NAME CONNECT TO user IDENTIFIED BY user USING 'DBLINK1 ';
可通过语句查看:
SELECT * FROM DBA_DB_LINKS;
方法二:
CREATE PUBLIC DATABASE LINK DBLINK_NAME CONNECT TO user IDENTIFIED BY user USING '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 16.0.xx.xxx)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = EAST)
)
)';
4、使用Dblink:
sqlplus user/user
SELECT * FROM user_tables@DBLINK_NAME;