转:global_names的使用

原文: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

 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
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;

 

表已创建。

 

SQL> select count(*) from t;

 

  COUNT(*)
----------
        22

 

实例orcl
二、查看初始参数
SQL> show parameter db_domain

 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_domain                            string
SQL> show parameter db_name

 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
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'
;

 

数据库链接已创建。

 

SQL> select count(*) from t@test;

 

  COUNT(*)
----------
        22
四、将global_names改为false
SQL> alter system set global_names=false scope=both;

 

系统已更改。

 

SQL> select count(*) from t@test;

 

  COUNT(*)
----------
        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;

 

系统已更改。

 

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

 

出错原因:dblink 的名称与目标数据库的名称不相同。

 

SQL> select count(*) from t@test;

 

  COUNT(*)
----------
        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

 

说明:数据库连接串的名称不会影响dblink
六、修改db_domain
SQL> create pfile from spfile;

 

文件已创建。

 

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
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

 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_domain                            string      a

 

SQL> select count(*) from t@test;

 

  COUNT(*)
----------
        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> create database link test connect to olive identified by olive2 using 'test';

 

数据库链接已创建。

 

SQL> select count(*) from t@test;

 

  COUNT(*)
----------
        22

SQL>

你可能感兴趣的:(global)