天天看點

Tnsping OK不代表listener正常

   Tnsping OK不代表listener正常,近日遇到一個問題,環境是11Gr2 RAC,tnsping正常,但是實際通路資料庫報錯

ORA-12545: 因目标主機或對象不存在, 連接配接失敗 

代碼如下

[grid@grida ~]$ srvctl config scan 

SCAN name: scan-grid, Network: 1/172.16.200.0/255.255.255.0/eth0 

SCAN VIP name: scan1, IP: /scan-grid/172.16.200.219 

tnsname file: 

XYZ = 

 (DESCRIPTION = 

   (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.200.219)(PORT = 1521)) 

   (LOAD_BALANCE = yes) 

   (CONNECT_DATA = 

     (SERVER = DEDICATED) 

     (SERVICE_NAME = XYZ) 

   ) 

 ) 

scanip:172.16.200.219 

C:\Users\B010910>tnsping xyz 

TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 07-5月 - 

2012 09:02:43 

Copyright (c) 1997, 2010, Oracle.  All rights reserved. 

已使用的參數檔案: 

d:\oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora 

已使用 TNSNAMES 擴充卡來解析别名 

嘗試連接配接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.200.219)(PORT 

= 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME 

= XYZ))) 

OK (60 毫秒) 

C:\Users\B010910>sqlplus /nolog 

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 09:03:06 2012 

Copyright (c) 1982, 2010, Oracle.  All rights reserved. 

SQL> conn system/0racle@xyz; 

ERROR: 

ORA-12545: 因目标主機或對象不存在, 連接配接失敗  

經過分析,tnsping正常隻能說明,該IP、1521端口、以及listener status是正常的。但是在實際需要通路instance的時候,并沒有能夠正常連接配接,主要問題就是instance并沒有正常的注冊到listener中,需要進一步分析沒有注冊的原因。

  檢視CRS資源 

[oracle@qr01db01 ~]$ crsctl status res -t 

-------------------------------------------------------------------------------- 

NAME           TARGET  STATE        SERVER                   STATE_DETAILS       

Local Resources 

ora.DATA_QR01.dg 

               ONLINE  ONLINE       qr01db01                                     

               ONLINE  ONLINE       qr01db02                                     

ora.DBFS_DG.dg 

ora.LISTENER.lsnr 

ora.RECO_QR01.dg 

ora.asm 

               ONLINE  ONLINE       qr01db01                 Started             

ora.gsd 

               OFFLINE OFFLINE      qr01db01                                     

               OFFLINE OFFLINE      qr01db02                                     

ora.net1.network 

ora.ons 

ora.registry.acfs 

Cluster Resources 

ora.LISTENER_SCAN1.lsnr 

      1        ONLINE  ONLINE       qr01db01                                     

ora.cvu 

ora.dbm.db 

      1        ONLINE  ONLINE       qr01db02                 Open                

      2        ONLINE  ONLINE       qr01db01                 Open                

ora.oc4j 

ora.qr01db01.vip 

ora.qr01db02.vip 

      1        ONLINE  ONLINE       qr01db02                                     

ora.scan1.vip 

檢視instance是否正常注冊

[oracle@qr01db01 ~]$ ps -ef | grep tns 

oracle    3049     1  0 May02 ?        00:00:02 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit 

oracle    3057     1  0 May02 ?        00:00:02 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit 

oracle    5677  5606  0 10:33 pts/0    00:00:00 grep tns 

[oracle@qr01db01 ~]$ lsnrctl service LISTENER_SCAN1 

LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 07-MAY-2012 10:33:27 

Copyright (c) 1991, 2010, Oracle.  All rights reserved. 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1))) 

Services Summary... 

Service "dbm.example.com" has 2 instance(s).  <<<<<<<<<<<<<<<<<這裡顯示已經将執行個體注冊

  Instance "dbm1", status READY, has 1 handler(s) for this service... 

    Handler(s): 

      "DEDICATED" established:0 refused:0 state:ready 

         REMOTE SERVER 

         (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.0.2.24)(PORT=1521))) 

  Instance "dbm2", status READY, has 1 handler(s) for this service... 

         (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.0.2.25)(PORT=1521))) 

Service "dbmXDB.example.com" has 2 instance(s). 

      "D000" established:0 refused:0 current:0 max:1022 state:ready 

         DISPATCHER  

         (ADDRESS=(PROTOCOL=tcp)(HOST=qr01db01.example.com)(PORT=61048)) 

         (ADDRESS=(PROTOCOL=tcp)(HOST=qr01db02.example.com)(PORT=46543)) 

The command completed successfully 

檢視parameter參數 

[oracle@qr01db01 ~]$ sqlplus / as sysdba 

SQL> show parameter remote_listener

NAME                                 TYPE        VALUE 

------------------------------------ ----------- ------------------------------ 

remote_listener                      string      qr01-scan:1521 

SQL> show parameter local_listener

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

local_listener string (DESCRIPTION=(ADDRESS_LIST=(AD

DRESS=(PROTOCOL=TCP)(HOST=192.

0.2.24)(PORT=1521))))

參考hosts檔案設定 

[oracle@qr01db01 ~]$ cat /etc/hosts 

127.0.0.1       localhost.localdomain           localhost 

192.0.2.11      qr01cel01.example.com           qr01cel01 

192.0.2.12      qr01cel02.example.com           qr01cel02 

192.0.2.13      qr01cel03.example.com           qr01cel03 

192.0.2.14      qr01db01.example.com            qr01db01 

192.0.2.15      qr01db02.example.com            qr01db02 

192.0.2.21      qr01-scan.example.com           qr01-scan 

192.0.2.24      qr01db01-vip.example.com        qr01db01-vip 

192.0.2.25      qr01db02-vip.example.com        qr01db02-vip 

192.168.1.11    qr01cel01-priv.example.com      qr01cel01-priv 

192.168.1.12    qr01cel02-priv.example.com      qr01cel02-priv 

192.168.1.13    qr01cel03-priv.example.com      qr01cel03-priv 

192.168.1.14    qr01db01-priv.example.com       qr01db01-priv 

192.168.1.15    qr01db02-priv.example.com       qr01db02-priv 

     以上資訊都确認正常,基本就能将listener的問題解決了。

本文轉自 hsbxxl 51CTO部落格,原文連結:http://blog.51cto.com/hsbxxl/857475,如需轉載請自行聯系原作者

繼續閱讀