日期:2014-05-16  浏览次数:20407 次

oracle中创建database links及其使用

?假设DB1、DB2两个数据库,现在要在DB1中使用DB2的表,那么在DB1数据库中创建db link的命令如下:

一、创建database link

-- Create database link?
create database link db_1???
? connect to db_2_user identified by "db_2_user_password"
? using 'DEMO =
? (DESCRIPTION =
??? (ADDRESS_LIST =
????? (ADDRESS = (PROTOCOL = TCP)(HOST = db_2_ip)(PORT = 1521))
??? )
??? (CONNECT_DATA =
????? (SERVICE_NAME = db_2_server)
??? )
? )';?

其中,
?????? db_1是db link的名称;
?????? db_2_user是DB2这台机器上源数据库的用户名;
?????? db_2_user_password是密码;
?????? db_2_ip是DB2数据库地址,
?????? db_2_server是DB2数据库服务名。

这样就可以了,如果要访问B数据库的test表,可以“表名@数据链接名”这样用,如:

select * from?test@db_1

二、使用

?????? 注意点:如果在DB1的oracle clinet上通过database links访问DB2的表,需要在DB1的服务器的tnsnames正确指向DB2。假设你的DB_LINK是想从DB1连接到DB2,你需要配置DB1机器上的tnsnames正确指向DB2。如果你确认DB1上的tnsnames中配置正确;那么再确认你正确的tnsnames被使用了,也就是说DB1机器上系统的环境变量指向哪个oracle的bin目录,使用的是不是你配置正确的那个tnsnames文件。两个tnsnames正确配置完成后就可以使用了。