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

DBLink创建

背景:

数据库A:testa/testa SID=testa

数据库B:testb/testb SID=testb

?

需求:

数据库A想访问数据B的test表

?

分析:

1、在testa数据库中创建dblink

2、在A数据库创建test表同义词,这样A数据库就可以像访问自己的表一样访问B的test表

?

步骤:

1、在A数据库的tnsnames.ora中添加连接B数据库的连接字符串

db_B = --连接字符串
? (DESCRIPTION =
??? (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.10)(PORT = 1521)) -- B数据库IP
??? (CONNECT_DATA =
????? (SERVER = DEDICATED)
????? (SERVICE_NAME = testb) -- B数据库的SID
??? )
? )

2、以sys用户登录A数据库,并赋予testa用户创建dblink的权限

grant resource to testa;

grant creat database link to testa;

?

3、以testa用户登录A数据库,创建dblink

CREATE DATABASE LINK DBLink_B CONNECT TO testb IDENTIFIED BY testb USING 'db_B';

参数解释:

CREATE DATABASE LINK DBLink_B: 创建dblink,名称为DBLink_B
CONNECT TO testb : 连接到testb用户
IDENTIFIED BY testb:testb用户密码为testb
USING 'db_B':使用上面创建的数据库连接字符串

?

创建好以后可以使用下面的方式访问B数据库的test表:

select * form test@DBLink_B;

?

4、创建同义词,更方便

create or replace synonym test
? for test@DBLink_B;

?

现在A数据库可以直接访问test表了。

select * from test;

?

?

?