global_names与dblink

本文详细介绍了Oracle数据库中global_names参数的作用及其影响,包括如何设置和使用,以及其在高级复制、Streams等场景中的应用。同时展示了通过global_names参数在本地数据库与目标数据库之间建立和管理dblink的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

global_names:
默认为false
改为true时,主要影响dblink,需要名字与目标数据库global_name相同,否则本机数据库通过dblink连接带目标数据库失败
在global_names=true的情况下如果当前数据库需要使用多个dblink连接到同一个目标数据库时,可以设置dblink名字为global_name@x
例如dblink名字:yeyj11g@link1yeyj11g@link2来进行区分
查看目标机global_name:  SQL> select * from global_name;

高级复制和streams需要设置此参数为true,这时就需要注意数据库原有dblink是否有效了,不过事实上这里的global_names并不是一定需要为true,只是oracle文档推荐为true而已

这里讲下2张视图:
dba_db_links
v$dblink
这2张视图都可以查询当前数据库的dblink,不同的是,通过v$dblink查询dblink可能返回值不全,只用当数据库使用了dblink,才会向v$dblink写入该dblink,这时才能查到相关信息。重启清空,而dba_db_links内信息是永久的。

实验2种情况:
global_names=false
目标数据库global_name:
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
YEYJ11G
现在我们在本机创建一个名为test的dblink
create database link test connect to ad1 identified by ad1 using 'yeyj11g';
'yeyj11g'已写进tnsnames.ora文件里了
查看本机拥有的dblinks
SQL> select * from dba_db_links;
OWNER      DB_LINK    USERNAME                       HOST       CREATED
---------- ---------- ------------------------------ ---------- ---------
PUBLIC     YEYJ11G    AD                             yeyj11g    30-NOV-11
SYS        TEST       AD1                            yeyj11g    05-DEC-11
查询下目标库的数据
SQL> alter system set global_names=false ;
System altered.
SQL> select count(*) from ad1.AD1_TEST@TEST;
  COUNT(*)
----------
    155792

global_names=true
现在将global_names改成true,仍旧用之前建立的test的dblink查询下目标数据库的数据:
SQL> alter system set global_names=true;
System altered.
SQL> select count(*) from ad1.AD1_TEST@TEST;
select count(*) from ad1.AD1_TEST@TEST
                                  *
ERROR at line 1:
ORA-02085: database link TEST connects to YEYJ11G
将test的dblink删掉,重新创建一个与目标数据库global_name相同的dblink后进行查询目标库数据
SQL> drop database link test;
Database link dropped.
SQL> create database link yeyj11g connect to ad1 identified by ad1 using 'yeyj11g';
Database link created.
SQL> select count(*) from ad1.AD1_TEST@yeyj11g;
  COUNT(*)
----------
    155792
再创建一个global_name@x的dblink,举名:yeyj11g@test1
SQL> create database link yeyj11g@test1 connect to ad1 identified by ad1 using 'yeyj11g';
Database link created.
SQL> select * from dba_db_links;
OWNER      DB_LINK         USERNAME   HOST       CREATED
---------- --------------- ---------- ---------- ---------
SYS        YEYJ11G         AD1        yeyj11g    05-DEC-11
PUBLIC     YEYJ11G         AD         yeyj11g    30-NOV-11
SYS        YEYJ11G@TEST1   AD1        yeyj11g    05-DEC-11
查询目标库数据
SQL> select count(*) from ad1.AD1_TEST@yeyj11g@test1;
  COUNT(*)
----------
    155792
同样成功

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24005010/viewspace-712739/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24005010/viewspace-712739/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值