需求描述:
本地一台客户机,上面安装有ORACLE数据库,本客户机的IP为 10.187.255.251。
机房一台数据库服务器,IP地址为10.187.255.11,SID为XYXNB ,用户名为USER密码为PASSWORD
通过 SELECT INSTANCE_NAME FROM V$INSTANCE; 语句查看本地数据库SID为 ORCL。
此时一个需求是要将本地的ORCL数据库访问到机房的XYXNB中的数据,也就是说,需要在本地ORCL数据库中建立DATABASE LINK,可以在本地的SQL中直接访问远程机房中的数据。
1、如何返回数据库的GLOBAL_NAME?
执行SELECT * FROM GLOBAL_NAME;(远程机房的GLOBAL_NAME为XYXNB)
2、如何查看Global_name参数是true还是False?
答:执行:SQL> show parameter global_name;
执行的结果如下:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean TRUE
表示该参数是true
该参数为true时,你在本地建立的DBLINK的名称必须和远程的Global_name一致才行。
3、查看远程数据徊是否支持高级复制功能。
答:通过查看v$option视图,如果其中Advanced replication为TRUE,则支持高级复制功能;否则不支持。
执行语句为:select * from v$option;
也可以执行select * from v$option where PARAMETER='Advanced replication'语句,
如何返回值为True,那么就是支持,否则就是不支持。在两个数据库中都是检查是否支持才行。
建立步骤:
在本地通过修改tnsnames.ora文件建立一个Oracle的客户端连接XYXNB,用于连接远程服务器数据库。
通过下面的语句来建立DATABASE LINK:
create database link dblinkname connect to user identified by password using 'xyxnb';
上面语句中中:
dblinkname是要建立的ORACLE DATABASE LINK 的名字,将来需要调用远程数据库的数据的时候,只需要在本地SQL中写上@ dblinkname 就可以直接访问。
user 是连接远程数据库的用户名。
password是user 用户的密码。
'xyxnb'是本地建立的连接到远程数据库的数据库的服务名(可以在oracle的安装目录的tnsnames.ora文件中看到)。
3、测试连接是否成功:
select * from dual@xyxnb
如果返回结果如下则表示连接成功了。
DUMMY
-----
X
4、在本地数据为中查询已经建立的远程连接名:
SQL> select owner,object_name from dba_objects where object_type='DATABASE LINK';
OWNER OBJECT_NAME
------------------------------ --------------------------------------------------------------------------------
USER XYXNB
在本地的计算机上建立了一个DBLINK,用于连接到远程数据库服务器中。
5、通过DATABASE LINK在本地建立同样的表:
Create table XXXX as select * from TABLE_NAME@XYXNB;
6、删除已经建立的DATABASE LINK
DROP DATABASE LINK dblinkname;