程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據庫GLOBAL_NAMES參數的詳細研究

Oracle數據庫GLOBAL_NAMES參數的詳細研究

編輯:Oracle數據庫基礎

Oracle數據庫GLOBAL_NAMES參數的相關知識是本文我們主要要介紹的內容,當GLOBAL_NAMES參數設置為TRUE時,使用DATABASE LINK時,DATABASE LINK的名稱必須與被連接庫的GLOBAL_NAME一致。下面做一個測試,在測試中,創建數據庫鏈接的庫為XJ(Windows 2003 ORACLE 10g 10.2.0.1),被鏈接的庫為DMDB(Linux AS5 Oracle 10g 10.2.0.1 RAC)。

首先查看DMDB的相關配置:

  1. SQL> show parameter global_names  
  2. NAME                                 TYPE        VALUE  
  3. ------------------------------------ ----------- ---------  
  4. global_names                         boolean     FALSE  
  5. SQL> select * from global_name;;  
  6. GLOBAL_NAME  
  7. ----------------------------------------------------------  
  8. DMDB 

可以看到這個被鏈接的庫其global_names參數為FALSE。

要創建數據庫鏈接的庫的配置:

  1. SQL> show parameter global_names  
  2. NAME                                 TYPE        VALUE  
  3. ------------------------------------ ----------- -------  
  4. global_names                         boolean     FALSE  
  5. SQL> select * from global_name;  
  6. GLOBAL_NAME  
  7. --------------------------------------------------------  
  8. XJ 

然後做下面的操作:

  1. SQL> create database link test_link connect to test identifIEd by test using 'DMDB';  
  2. 數據庫鏈接已創建。  
  3. SQL> select * from dual@test_link ;  
  4. D  
  5. -  

可以看到數據庫鏈接工作正常。

在DMDB庫上將global_names設為TRUE:

SQL> alter system set global_names=true;

系統已更改。

在XJ庫上再次查詢,並新建一個DATABASE LINK再進行查詢:

  1. SQL> select * from dual@test_link ;  
  2. D  
  3. -  
  4. X  
  5. SQL> create database link test_link2 connect to test identifIEd by test using 'DMDB';  
  6. 數據庫鏈接已創建。  
  7. SQL> select * from dual@test_link2 ;  
  8. D  
  9. -  

此時可以看數據庫鏈接工作正常。我們再將XJ庫的global_names參數設置為TRUE:

  1. SQL> alter system set global_names=true;  
  2. 系統已更改。  
  3. SQL> select * from dual@test_link2 ;  
  4. select * from dual@test_link2   
  5. *第 1 行出現錯誤:  
  6. ORA-02085: 數據庫鏈接 TEST_LINK2 連接到 DMDB  
  7. SQL> select * from dual@test_link   
  8. select * from dual@test_link   
  9. *第 1 行出現錯誤:  
  10. ORA-02085: 數據庫鏈接 TEST_LINK 連接到 DMDB  
  11. 而再次將XJ庫的global_names設為FALSE,則數據庫鏈接又可用了。  
  12. SQL> alter system set global_names=false;  
  13. 系統已更改。  
  14. SQL> select * from dual@test_link ;  
  15. D  
  16. -  
  17. X  
  18. SQL> select * from dual@test_link2 ;  
  19. D  
  20. -  

再將DMDB庫的global_names設為FALSE,數據庫鏈接仍然可用:

  1. 在DMDB庫上:  
  2. SQL> alter system set global_names=false;  
  3. 系統已更改。  
  4. 在XJ庫上:  
  5. SQL> select * from dual@test_link ;  
  6. D  
  7. -  

可以看到,鏈接仍然可以用。如果在DMDB庫上創建鏈接到XJ庫上,可以觀察到同樣的結果。可以得出一個結論:global_names參數設置為FALSE,影響的是創建數據庫鏈接的那個庫對數據庫鏈接的使用。也就是說,如果一個庫(實例)的global_names參數設值為TRUE,則該庫連接其他庫的數據庫鏈接,其名稱必須要與被連接的庫的global_name相同:

  1. 在XJ庫上:  
  2. SQL> alter system set global_names=true;  
  3. 系統已更改。  
  4. SQL> create database link dmdb connect to test identifIEd by test using 'dmdb';  
  5. 數據庫鏈接已創建。  
  6. SQL> select * from dual@dmdb ;  
  7. D  
  8. -  
  9. X  
  10. SQL> select * from dual@test_link ;  
  11. select * from dual@test_link   
  12. *  
  13. 第 1 行出現錯誤:  
  14. ORA-02085: 數據庫鏈接 TEST_LINK 連接到 DMDB  
  15. SQL> select * from dual@test_link2 ;  
  16. select * from dual@test_link2   
  17. *第 1 行出現錯誤:  
  18. ORA-02085: 數據庫鏈接 TEST_LINK2 連接到 DMDB 

如果在GLOBAL_NAMES設置為TRUE的情況下,如果要建多個數據庫鏈接到同一個庫,怎麼辦呢?因為數據庫鏈接的名稱必須與目標庫的GLOBAL_NAME相同。可以按如下的方法:

  1. SQL> create database linkdmdb@link1connect to test identifIEd by test using 'dmdb';  
  2. 數據庫鏈接已創建。  
  3. SQL> create database linkdmdb@link2connect to test identifIEd by test using 'dmdb';  
  4. 數據庫鏈接已創建。  
  5. SQL> select * fromdual@dmdb ;  
  6. D  
  7. -  
  8. X  
  9. SQL> select * fromdual@dmdb@link1 ;  
  10. D  
  11. -  
  12. X  
  13. SQL> select * fromdual@dmdb@link2 ;  
  14. D  
  15. -  

也就是在GLOBAL_NAME後面加上@再加上一個標識。這樣就能夠創建多個數據庫鏈接到同一目標庫上了。

另外在創建數據庫鏈接時,不能給其他SCHEMA創建鏈接,這是因為數據庫鏈接(database link)其名稱可以含有'.'即點號。比如A用戶想給B用戶創建一個DBLINK名叫LINKB,CREATE DATABASE LINK B.LINKB ......, 這個語句將會實際創建一個A用戶下的名為B.LINKB的數據庫鏈接。

關於Oracle數據庫GLOBAL_NAMES參數的相關知識就介紹到這裡了,希望本次的介紹能夠對您有所收獲!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved