一、实验环境
两台数据库,分别是
第一台:
SID:r10g1
第二台:
SID:r10gr2
二、第二台机器建立DBLink,访问r10g1(远程数据库)
1、在r10g1上建立如下对象
---------表空间
create tablespace test_tbs
datafile '/u01/app/oracle/oradata/r10g1/test_tbs.dbf'
size 100M
autoextend on next 50M
maxsize 500M;
----------临时表空间
create temporary tablespace test_tbs_temp
tempfile '/u01/app/oracle/oradata/r10g1/test_tbs_temp.dbf'
size 100M
autoextend on next 50M
maxsize 500M;
----------------用户
create user test_users identified by oracle default tablespace test_tbs temporary tablespace test_tbs_temp;
-------------在用户test_users下建立表,并插入数据
create table test_a(id number);
insert into test_a (id) values (100);
select * from test_a;
2、在r10gr2上配置TNS,服务名为101_r10g1,确保通过服务名连接r10g1成功
3、在r10gr2上创建DBLink
(1)查看本地Global_name参数是true还是False?
SQL> show parameter global_name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean FALSE
如果是TRUE,本地建立的dblink的名称必须和远程的global_name一致才行
(2)查看GLOBAL_NAME
SELECT * FROM GLOBAL_NAME;
我这里第一台机器的GLOBAL_NAME为
GLOBAL_NAME
--------------------------------------------------------------------------------
R10G1.REGRESS.RDBMS.DEV.US.ORACLE.COM
(3)查看远程的数据库是否支持高级复制
select * from v$option where parameter='Advanced replication';
PARAMETER VALUE
------------------------------ ----------
Advanced replication TRUE
如果返回的值为true,那么就是支持,否则就是不支持,应该在两个数据库中都是检查是否支持才行
(4)创建DBLink
create database link dbl_test connect to test_users identified by oracle using '101_r10g1';
---dbl_test : dblink的名字
---test_users :要连接远程数据的用户名
---oracle:要连接远程数据库的用户密码
---101_r10g1:本地建立的TNS名称
注意:如果本地Global_name参数是true,这里在创建dblink的名称时就不能是dbl_test了,必须是R10G1.REGRESS.RDBMS.DEV.US.ORACLE.COM
(5)测试是否成功
SQL> select * from test_a@dbl_test;
以上是基本本地数据库(r10gr2)的sys用户创建的,如果SCOTT想要创建DBLink,需要给SCOTT赋予如下权限
grant create database link to scott;
(6)查看本地DBLINK对象
SQL> select owner,object_name from dba_objects where object_type='DATABASE LINK';
OWNER OBJECT_NAME
---------- --------------------------------------------------
SYS DBL_TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
SCOTT DBL_TEST1.REGRESS.RDBMS.DEV.US.ORACLE.COM