目的:
为解决跨库访问问题,可以使用DBLink连接和同义词优化。
步骤:
- 1、准备2个数据库
db1.本地库,ip:192.168.167.123,端口1521,服务名orcl
db2.目标库,ip:39.96.21.123,端口1521,服务名orcl - 2、在db1库的tnsnames.ora中新增目标库db2的别名
test_dblink =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 39.96.21.123)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
- 3、在db1中执行建立DBLink的语句,格式如下:
create public database link DBLink_Name connect to UserName identified by "Password" USING 'TnsName';
解释:
DBLink_Name是指要建立的DBLink的名称。
UserName 是目标库中的用户名。
Password 是目标库中的用户名口令。
TnsName 是本地库中的目标库别名
本例中的语句为:
create public database link Test_DBLink connect to prg identified by "prg" USING 'test_dblink'
执行结果
- 4、在本地库中执行查询,查询目标库中的表数据,语法如下:
select * from Table_Name@DBLink_Name;
解释:
Table_Name是目标库中的表名.
DBLink_Name是新建的DBLink.
本例中的语句为:
select * from user_info@Test_DBLink
- 5、优化查询方式,为目标库中的表查询建立同义词,语法如下:
create synonym Synonym_Name FOR Table_Name@DBLink_Name;
解释:
Synonym_Name 是要建立的同义词名字.
Table_Name是目标库中的表名.
DBLink_Name是新建的DBLink.
本例中的语句为:
create synonym Test_synonym FOR user_info@Test_DBLink;
优化后的查询语句为:
select * from Test_synonym;