现有两个oracle DB为A和B,为了能在A数据库中对B数据库进行操作,我们需要在A数据库中建立对B的DBLink。
在创建DBLink之前,我们首先去检查下DB A的global_names的值(select name,value from v$parameter where name =‘global_names‘),当此值为true时表示DBLink作用于同名的DB,反之DBLink连接的两台DB可以不同名,一般情况我们的DB都不会是同名的,故我们需要此参数值为false,如为true,需要将其改成false(alter system set global_names=false;)。
下面我们就可以创建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)
)
)‘;
其中<用户名>和<密码>为DB B的数据库的访问的用户名和密码,using后面为DB B的tns的配置路径。若只DB A中的TNS文件中已经配置好了DB B的访问路径,则以上的创建语句也可简写成如下:
create public database link A_TO_B
connect to <用户名> identified by <密码>
using ‘B‘;
DBLink创建好后,我们就可以在DB A中去对DB B进行操作了。比如我们登录到DB A中去查看DB B中的emp table的数据,我们可以这样写查询语句(select * from [url=mailto:emp@A_TO_B]emp@A_TO_B[/url])
(注:如果DB的版本为11g及其以上版本,创建DBLink时的用户名和密码则区分大小写,而且需要用双引号将其引起来)
注:sqlplus下登录远程服务器oracle的指令如下:sql>connect username/password@ipAddress/sid;