作者:li永不言败ly_608 | 来源:互联网 | 2024-11-20 11:20
本文介绍了如何在两个Oracle数据库(假设为数据库A和数据库B)之间设置DBLink,以便能够从数据库A中直接访问和操作数据库B中的数据。文章详细描述了创建DBLink前的必要准备步骤以及具体的创建方法。
在需要跨两个Oracle数据库(例如数据库A和数据库B)进行数据交互的情况下,可以通过在数据库A中设置一个指向数据库B的DBLink来实现这一需求。
在开始创建DBLink之前,建议先验证数据库A的global_names
参数设置(查询命令:select name, value from v$parameter where name='global_names')。如果该参数值为TRUE,意味着DBLink仅能用于连接具有相同名称的数据库;反之,则允许连接不同名称的数据库。通常情况下,我们希望连接的是不同名称的数据库,因此如果global_names
被设置为TRUE,需要将其修改为FALSE(命令:alter system set global_names=false;)。
接下来,可以使用以下SQL语句来创建DBLink:
CREATE PUBLIC DATABASE LINK A_TO_B
CONNECT TO IDENTIFIED BY
USING '(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.1)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=B)
)
)';
这里,和应替换为数据库B的登录凭证,而USING后的字符串则是数据库B的TNS配置信息。如果数据库A的TNS配置文件中已包含数据库B的相关信息,上述命令可以简化为:
CREATE PUBLIC DATABASE LINK A_TO_B
CONNECT TO IDENTIFIED BY
USING 'B';
成功创建DBLink之后,就可以在数据库A中执行针对数据库B的操作了。例如,若想查询数据库B中的EMP表数据,可以使用如下SQL语句:SELECT * FROM EMP@A_TO_B
。
值得注意的是,对于Oracle 11g及以上版本,在创建DBLink时,用户名和密码是区分大小写的,并且必须用双引号包围。
此外,如果您需要通过SQL*Plus工具从本地机器连接到远程Oracle服务器,可以使用以下命令:sql> connect username/password@hostname/sid
。
参考文献:[原始链接](http://www.cnblogs.com/moonfans/p/3833566.html)