oracle 02085,【DBLINK】“ORA-02085: database link %s connects to %s”故障排查及处理策略两则...
今天在使用連接遠程數據庫實例的database link時遭遇“ORA-02085: database link DBLINK_TO_SECGC connects to SECGC”報錯,導致遠程數據無法獲取。本文給出ORA-02085報錯過程、以及兩種處理方法。該問題處理過程具有普遍參考意義。
約定:雖然這里secdb實例和secgc實例都在一套物理服務器上。我們在此假設secdb作為本地數據庫,secgc作為遠程數據庫1.在遠程secgc數據庫實例user_secgc用戶中創建基表T并初始化數據secdb@secdb1 /home/oracle$ export ORACLE_SID=secgcsecgc@secdb1 /home/oracle$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Thu May 19 20:24:43 2011Copyright (c) 1982, 2005, Oracle.? All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionssys@secgc> create user user_secgc identified by user_secgc;User created.sys@secgc> grant connect,resource to user_secgc;Grant succeeded.sys@secgc> conn user_secgc/user_secgcConnected.user_secgc@secgc> create table t (x varchar2(10));Table created.user_secgc@secgc> insert into t values ('secooler');1 row created.user_secgc@secgc> commit;Commit complete.user_secgc@secgc> select * from t;X----------secooler2.在本地secdb實例上創建database link連接到secgc實例的user_secgc用戶1)在本地secdb實例上創建到secgc實例的連接串secdb@secdb1 /home/oracle$ vi $ORACLE_HOME/network/admin/tnsnames.oraSECGC =(DESCRIPTION =(address = (protocol = tcp)(host = secdb1)(port = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = secgc)))2)在本地secdb數據庫實例上創建database linksecdb@secdb1 /home/oracle$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Thu May 19 20:31:06 2011Copyright (c) 1982, 2005, Oracle.? All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionssys@secdb> create public database link dblink_to_secgc connect to user_secgc identified by user_secgc using 'SECGC';Database link created.3.測試database link是否可用,出現ORA-02085錯誤sys@secdb> select * from t@dblink_to_secgc;select * from t@dblink_to_secgc*ERROR at line 1:ORA-02085: database link DBLINK_TO_SECGC connects to SECGC4.報錯原因1)獲取ORA-02085錯誤的參考信息secdb@secdb1 /home/oracle$ oerr ora 208502085, 00000, "database link %s connects to %s"// *Cause: a database link connected to a database with a different name.//? The connection is rejected.// *Action: create a database link with the same name as the database it//? connects to, or set global_names=false.//2)從報錯信息的描述上已經可以得到問題的原因和處理方法錯誤原因:使用的dblink名字與要連接的數據庫名字不相同處理方法:有兩種處理方法第一種處理方法:創建與對方數據庫名字相同的dblink第二種處理方法:調整數據庫參數global_names值為false,取消這種限制5.故障處理方法兩則按照上面給出的兩種處理方法進行驗證。1)第一種處理方法:使用與遠程數據庫名字相同的dblink(1)獲取遠程數據庫名字sys@secgc> select * from global_name;GLOBAL_NAME----------------------SECGC(2)創建與遠程數據庫名字相同的dblinksys@secdb> create public database link secgc connect to user_secgc identified by user_secgc using 'SECGC';Database link created.(3)在global_names參數為TRUE的時候測試dblink可用性注意:僅需調整使用dblink端的數據庫參數即可。sys@secdb> show parameter global_nameNAME???????????????????????????????? TYPE??????? VALUE------------------------------------ ----------- ----------global_names???????????????????????? boolean???? TRUEsys@secdb> select * from t@secgc;X----------secooler成功。2)第二種處理方法:調整數據庫參數global_names值為falsesys@secdb> show parameter global_nameNAME???????????????????????????????? TYPE??????? VALUE------------------------------------ ----------- ----------global_names???????????????????????? boolean???? FALSEsys@secdb> alter system set global_names=FALSE;System altered.sys@secdb> show parameter global_nameNAME???????????????????????????????? TYPE??????? VALUE------------------------------------ ----------- ----------global_names???????????????????????? boolean???? FALSEsys@secdb> select * from t@dblink_to_secgc;X----------secooler可見,此時dblink連接遠程數據庫實例獲取數據成功。6.10g官方文檔中關于global_names參數的描述官方文檔參考鏈接:
總結
以上是生活随笔為你收集整理的oracle 02085,【DBLINK】“ORA-02085: database link %s connects to %s”故障排查及处理策略两则...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 职场一些办公技能和技巧总结
- 下一篇: 三维重建 - Clion打包C++代码(