Oracle數(shù)據(jù)庫(kù)GLOBAL_NAMES參數(shù)的詳細(xì)研究
Oracle數(shù)據(jù)庫(kù)GLOBAL_NAMES參數(shù)的相關(guān)知識(shí)是本文我們主要要介紹的內(nèi)容,當(dāng)GLOBAL_NAMES參數(shù)設(shè)置為TRUE時(shí),使用DATABASE LINK時(shí),DATABASE LINK的名稱必須與被連接庫(kù)的GLOBAL_NAME一致。下面做一個(gè)測(cè)試,在測(cè)試中,創(chuàng)建數(shù)據(jù)庫(kù)鏈接的庫(kù)為XJ(WINDOWS 2003 ORACLE 10g 10.2.0.1),被鏈接的庫(kù)為DMDB(LINUX AS5 ORACLE 10g 10.2.0.1 RAC)。
首先查看DMDB的相關(guān)配置:
- SQL> show parameter global_names
- NAME TYPE VALUE
- ------------------------------------ ----------- ---------
- global_names boolean FALSE
- SQL> select * from global_name;;
- GLOBAL_NAME
- ----------------------------------------------------------
- DMDB
可以看到這個(gè)被鏈接的庫(kù)其global_names參數(shù)為FALSE。
要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)鏈接的庫(kù)的配置:
- SQL> show parameter global_names
- NAME TYPE VALUE
- ------------------------------------ ----------- -------
- global_names boolean FALSE
- SQL> select * from global_name;
- GLOBAL_NAME
- --------------------------------------------------------
- XJ
然后做下面的操作:
- SQL> create database link test_link connect to test identified by test using 'DMDB';
- 數(shù)據(jù)庫(kù)鏈接已創(chuàng)建。
- SQL> select * from dual@test_link ;
- D
- -
- X
可以看到數(shù)據(jù)庫(kù)鏈接工作正常。
在DMDB庫(kù)上將global_names設(shè)為TRUE:
SQL> alter system set global_names=true;
系統(tǒng)已更改。
在XJ庫(kù)上再次查詢,并新建一個(gè)DATABASE LINK再進(jìn)行查詢:
- SQL> select * from dual@test_link ;
- D
- -
- X
- SQL> create database link test_link2 connect to test identified by test using 'DMDB';
- 數(shù)據(jù)庫(kù)鏈接已創(chuàng)建。
- SQL> select * from dual@test_link2 ;
- D
- -
- X
此時(shí)可以看數(shù)據(jù)庫(kù)鏈接工作正常。我們?cè)賹J庫(kù)的global_names參數(shù)設(shè)置為TRUE:
- SQL> alter system set global_names=true;
- 系統(tǒng)已更改。
- SQL> select * from dual@test_link2 ;
- select * from dual@test_link2
- *第 1 行出現(xiàn)錯(cuò)誤:
- ORA-02085: 數(shù)據(jù)庫(kù)鏈接 TEST_LINK2 連接到 DMDB
- SQL> select * from dual@test_link
- select * from dual@test_link
- *第 1 行出現(xiàn)錯(cuò)誤:
- ORA-02085: 數(shù)據(jù)庫(kù)鏈接 TEST_LINK 連接到 DMDB
- 而再次將XJ庫(kù)的global_names設(shè)為FALSE,則數(shù)據(jù)庫(kù)鏈接又可用了。
- SQL> alter system set global_names=false;
- 系統(tǒng)已更改。
- SQL> select * from dual@test_link ;
- D
- -
- X
- SQL> select * from dual@test_link2 ;
- D
- -
- X
再將DMDB庫(kù)的global_names設(shè)為FALSE,數(shù)據(jù)庫(kù)鏈接仍然可用:
- 在DMDB庫(kù)上:
- SQL> alter system set global_names=false;
- 系統(tǒng)已更改。
- 在XJ庫(kù)上:
- SQL> select * from dual@test_link ;
- D
- -
- X
可以看到,鏈接仍然可以用。如果在DMDB庫(kù)上創(chuàng)建鏈接到XJ庫(kù)上,可以觀察到同樣的結(jié)果??梢缘贸鲆粋€(gè)結(jié)論:global_names參數(shù)設(shè)置為FALSE,影響的是創(chuàng)建數(shù)據(jù)庫(kù)鏈接的那個(gè)庫(kù)對(duì)數(shù)據(jù)庫(kù)鏈接的使用。也就是說,如果一個(gè)庫(kù)(實(shí)例)的global_names參數(shù)設(shè)值為TRUE,則該庫(kù)連接其他庫(kù)的數(shù)據(jù)庫(kù)鏈接,其名稱必須要與被連接的庫(kù)的global_name相同:
- 在XJ庫(kù)上:
- SQL> alter system set global_names=true;
- 系統(tǒng)已更改。
- SQL> create database link dmdb connect to test identified by test using 'dmdb';
- 數(shù)據(jù)庫(kù)鏈接已創(chuàng)建。
- SQL> select * from dual@dmdb ;
- D
- -
- X
- SQL> select * from dual@test_link ;
- select * from dual@test_link
- *
- 第 1 行出現(xiàn)錯(cuò)誤:
- ORA-02085: 數(shù)據(jù)庫(kù)鏈接 TEST_LINK 連接到 DMDB
- SQL> select * from dual@test_link2 ;
- select * from dual@test_link2
- *第 1 行出現(xiàn)錯(cuò)誤:
- ORA-02085: 數(shù)據(jù)庫(kù)鏈接 TEST_LINK2 連接到 DMDB
如果在GLOBAL_NAMES設(shè)置為TRUE的情況下,如果要建多個(gè)數(shù)據(jù)庫(kù)鏈接到同一個(gè)庫(kù),怎么辦呢?因?yàn)閿?shù)據(jù)庫(kù)鏈接的名稱必須與目標(biāo)庫(kù)的GLOBAL_NAME相同??梢园慈缦碌姆椒ǎ?/p>
- SQL> create database linkdmdb@link1connect to test identified by test using 'dmdb';
- 數(shù)據(jù)庫(kù)鏈接已創(chuàng)建。
- SQL> create database linkdmdb@link2connect to test identified by test using 'dmdb';
- 數(shù)據(jù)庫(kù)鏈接已創(chuàng)建。
- SQL> select * fromdual@dmdb ;
- D
- -
- X
- SQL> select * fromdual@dmdb@link1 ;
- D
- -
- X
- SQL> select * fromdual@dmdb@link2 ;
- D
- -
- X
也就是在GLOBAL_NAME后面加上@再加上一個(gè)標(biāo)識(shí)。這樣就能夠創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)鏈接到同一目標(biāo)庫(kù)上了。
另外在創(chuàng)建數(shù)據(jù)庫(kù)鏈接時(shí),不能給其他SCHEMA創(chuàng)建鏈接,這是因?yàn)閿?shù)據(jù)庫(kù)鏈接(database link)其名稱可以含有'.'即點(diǎn)號(hào)。比如A用戶想給B用戶創(chuàng)建一個(gè)DBLINK名叫LINKB,CREATE DATABASE LINK B.LINKB ......, 這個(gè)語(yǔ)句將會(huì)實(shí)際創(chuàng)建一個(gè)A用戶下的名為B.LINKB的數(shù)據(jù)庫(kù)鏈接。
關(guān)于Oracle數(shù)據(jù)庫(kù)GLOBAL_NAMES參數(shù)的相關(guān)知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
原文出處:http://space.itpub.net/69924/viewspace-192128 。
【編輯推薦】






