ora-02085的解決:Database Link與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的相關配置:
SQL> show parameter global_names
NAME TYPE VALUE
------------------------------------ ----------- ---------
global_names boolean FALSE
SQL> select * from global_name;;
GLOBAL_NAME
----------------------------------------------------------
DMDB
可以看到這個被連結的庫其global_names引數為FALSE。
要建立資料庫連結的庫的配置:
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';
資料庫連結已建立。
SQL> select * from dual@test_link;
D
-
X
可以看到資料庫連結工作正常。
在DMDB庫上將global_names設為TRUE:
SQL> alter system set global_names=true;
系統已更改。
在XJ庫上再次查詢,並新建一個DATABASE LINK再進行查詢:
SQL> select * from dual@test_link;
D
-
X
SQL> create database link test_link2 connect to test identified by test using 'D
MDB';
資料庫連結已建立。
SQL> select * from dual@test_link2;
D
-
X
此時可以看資料庫連結工作正常。我們再將XJ庫的global_names引數設定為TRUE:
SQL> alter system set global_names=true;
系統已更改。
SQL> select * from dual@test_link2;
select * from dual@test_link2
*
第 1 行出現錯誤:
ORA-02085: 資料庫連結 TEST_LINK2 連線到 DMDB
SQL> select * from dual@test_link
select * from dual@test_link
*
第 1 行出現錯誤:
ORA-02085: 資料庫連結 TEST_LINK 連線到 DMDB
而再次將XJ庫的global_names設為FALSE,則資料庫連結又可用了。
SQL> alter system set global_names=false;
系統已更改。
SQL> select * from dual@test_link;
D
-
X
SQL> select * from dual@test_link2;
D
-
X
再將DMDB庫的global_names設為FALSE,資料庫連結仍然可用:
在DMDB庫上:
SQL> alter system set global_names=false;
系統已更改。
在XJ庫上:
SQL> select * from dual@test_link;
D
-
X
可以看到,連結仍然可以用。
如果在DMDB庫上建立連結到XJ庫上,可以觀察到同樣的結果。
可
以得出一個結論:global_names引數設定為FALSE,影響的是建立資料庫連結的那個庫對資料庫連結的使用。也就是說,如果一個庫(例項)的
global_names引數設值為TRUE,則該庫連線其他庫的資料庫連結,其名稱必須要與被連線的庫的global_name相同:
在XJ庫上:
SQL> alter system set global_names=true;
系統已更改。
SQL> create database link dmdb connect to test identified by test using 'dmdb';
資料庫連結已建立。
SQL> select * from dual@dmdb;
D
-
X
SQL> select * from dual@test_link;
select * from dual@test_link
*
第 1 行出現錯誤:
ORA-02085: 資料庫連結 TEST_LINK 連線到 DMDB
SQL> select * from dual@test_link2;
select * from dual@test_link2
*
第 1 行出現錯誤:
ORA-02085: 資料庫連結 TEST_LINK2 連線到 DMDB
如果在GLOBAL_NAMES設定為TRUE的情況下,如果要建多個資料庫連結到同一個庫,怎麼辦呢?因為資料庫連結的名稱必須與目標庫的GLOBAL_NAME相同。可以按如下的方法:
SQL> create database linkdmdb@link1connect to test identified by test using 'dmdb';
資料庫連結已建立。
SQL> create database linkdmdb@link2connect to test identified by test using 'dmdb';
資料庫連結已建立。
SQL> select * fromdual@dmdb;
D
-
X
SQL> select * fromdual@dmdb@link1;
D
-
X
SQL> select * fromdual@dmdb@link2;
D
-
X
也就是在GLOBAL_NAME後面加上@再加上一個標識。這樣就能夠建立多個資料庫連結到同一目標庫上了。
另外在建立資料庫連結時,不能給其他SCHEMA建立連結,這是因為資料庫連結(database link)其名稱可以含有'.'即點號。比如A使用者想給B使用者建立一個DBLINK名叫LINKB,CREATE DATABASE LINK B.LINKB ......, 這個語句將會實際建立一個A使用者下的名為B.LINKB的資料庫連結。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-1294297/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORA-02085 - database linkDatabase
- Oracle database link 詳解OracleDatabase
- Database Link的建立Database
- ora-02085問題解決
- 【DBLINK】“ORA-02085: database link %s connects to %s”故障排查及處理策略兩則Database
- oracle database link 的使用OracleDatabase
- database link概述Database
- CREATE DATABASE LINKDatabase
- Database Link使用Database
- 建立Database LinkDatabase
- oracle database linkOracleDatabase
- Management on database linkDatabase
- superset-database引數Database
- 【原創】ORA-02085問題的解決
- Oracle Database Link ProblemsOracleDatabase
- Dockerfile - 引數與詳解Docker
- Database Link 建立注意的兩點Database
- oracle database link 應用OracleDatabase
- CLUSTER_DATABASE_INSTANCES引數Database
- LOCK_NAME_SPACE 引數解決的使用
- 關於database link的物件型別Database物件型別
- create database link中的identified by valuesDatabaseIDE
- 關鍵字引數與非關鍵字引數(可變引數)詳解
- EF Power Tools引數不正確的解決方法
- SPFILE引數修改錯誤的解決辦法
- CLUSTER_DATABASE_INSTANCES 引數的真正含義Database
- Java Out Of Memory解決之JAVA_OPTS引數說明與配置Java
- 解決j-link無法使用以及keil識別出山寨j-link的解決方法
- oracle database link (dblink) 工作原理OracleDatabase
- Oracle Database Link Problems【Blog 搬家】OracleDatabase
- database link 關閉session問題DatabaseSession
- oracle impdp network_link引數使用介紹Oracle
- 解決ajax請求引數過多導致引數被截斷的問題
- SKlearn中分類決策樹的重要引數詳解
- 最新的ADT沒有NDK引數的解決方法
- Oracle 12.2 使用Database Link優化Standby Database WorkloadOracleDatabase優化
- Database Link 建立注意的兩點【Blog 搬家】Database
- RestCloud ETL解決shell指令碼引數化RESTCloud指令碼