背景:
数据库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;