原文:http://blog.chinaunix.net/uid-71225-id-2069062.html
本文主要将的是global_names的设置false|true,默认值是false,设置为false后,创建的dblink的名称与
目标数据库db_name无关,然而为true的情况下dblink的名称必须与目标数据库的db_name相同,否则出错。
两个实例或数据库的db_domain是否相同不会影响dblink的创建,连接串的名称也不会影响dblink的创建。
实例test
一、查看初始参数
SQL> conn /as sysdba
已连接。
SQL> show parameter db_domain
目标数据库db_name无关,然而为true的情况下dblink的名称必须与目标数据库的db_name相同,否则出错。
两个实例或数据库的db_domain是否相同不会影响dblink的创建,连接串的名称也不会影响dblink的创建。
实例test
一、查看初始参数
SQL> conn /as sysdba
已连接。
SQL> show parameter db_domain
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_domain string
SQL> show parameter db_name
------------------------------------ ----------- ------------------------------
db_domain string
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string test
SQL> conn olive/olive
已连接。
SQL> create table t as select * from all_users;
------------------------------------ ----------- ------------------------------
db_name string test
SQL> conn olive/olive
已连接。
SQL> create table t as select * from all_users;
表已创建。
SQL> select count(*) from t;
COUNT(*)
----------
22
----------
22
实例orcl
二、查看初始参数
SQL> show parameter db_domain
二、查看初始参数
SQL> show parameter db_domain
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_domain string
SQL> show parameter db_name
------------------------------------ ----------- ------------------------------
db_domain string
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string orcl
SQL> show parameter global_names
------------------------------------ ----------- ------------------------------
db_name string orcl
SQL> show parameter global_names
NAME TYPE VALUE
------------------------------------ ----------- -----------------------------
global_names boolean TRUE
三、创建dblink
SQL> conn test/test
已连接。
SQL> create database link test connect to olive identified by olive using 'test'
;
------------------------------------ ----------- -----------------------------
global_names boolean TRUE
三、创建dblink
SQL> conn test/test
已连接。
SQL> create database link test connect to olive identified by olive using 'test'
;
数据库链接已创建。
SQL> select count(*) from
t@test;
COUNT(*)
----------
22
四、将global_names改为false
SQL> alter system set global_names=false scope=both;
----------
22
四、将global_names改为false
SQL> alter system set global_names=false scope=both;
系统已更改。
SQL> select count(*) from
t@test;
COUNT(*)
----------
22
----------
22
SQL> create database link test2 connect to olive identified by olive using 'test
';
';
数据库链接已创建。
SQL> select count(*) from
t@test2;
COUNT(*)
----------
22
五、将global_names改为true
SQL> alter system set global_names=true scope=both;
----------
22
五、将global_names改为true
SQL> alter system set global_names=true scope=both;
系统已更改。
SQL> select count(*) from
t@test2;
select count(*) from t@test2
*
第 1 行出现错误:
ORA-02085: 数据库链接 TEST2.REGRESS.RDBMS.DEV.US.ORACLE.COM 连接到
TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
select count(*) from t@test2
*
第 1 行出现错误:
ORA-02085: 数据库链接 TEST2.REGRESS.RDBMS.DEV.US.ORACLE.COM 连接到
TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
出错原因:dblink 的名称与目标数据库的名称不相同。
SQL> select count(*) from
t@test;
COUNT(*)
----------
22
----------
22
SQL> create database link test3 connect to olive identified by olive using 'test3';
数据库链接已创建。
SQL> select count(*) from t@test3;
select count(*) from t@test3
*
第 1 行出现错误:
ORA-02085: 数据库链接 TEST3.REGRESS.RDBMS.DEV.US.ORACLE.COM 连接到
TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
SQL> select count(*) from t@test3;
select count(*) from t@test3
*
第 1 行出现错误:
ORA-02085: 数据库链接 TEST3.REGRESS.RDBMS.DEV.US.ORACLE.COM 连接到
TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
说明:数据库连接串的名称不会影响dblink
六、修改db_domain
SQL> create pfile from spfile;
六、修改db_domain
SQL> create pfile from spfile;
文件已创建。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
修改pfile
SQL> create spfile from pfile;
文件已创建。
SQL> conn test/test
已连接。
已连接。
SQL> show parameter global_names
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean TRUE
SQL> show parameter db_dom
------------------------------------ ----------- ------------------------------
global_names boolean TRUE
SQL> show parameter db_dom
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_domain string a
------------------------------------ ----------- ------------------------------
db_domain string a
SQL> select count(*) from
t@test;
COUNT(*)
----------
22
----------
22
七、修改test下的用户olive密码
SQL> alter user olive identified by olive2;
用户已更改。
八、在orcl下重新测试
SQL> conn test/test
已连接。
SQL> select count(*) from t@test;
select count(*) from t@test
*
第 1 行出现错误:
ORA-01017: 用户名/口令无效; 登录被拒绝
ORA-02063: 紧接着 line (起自 TEST)
九、删除dblink,然后重新创建
SQL> drop database link test;
SQL> drop database link test;
数据库链接已删除。
SQL> create database link test connect to olive identified by olive2 using 'test';
数据库链接已创建。
SQL> select count(*) from
t@test;
COUNT(*)
----------
22
----------
22
SQL>