RAC環境TNS-12541報錯處理

weixin_34262482發表於2013-08-26

按照前文所述搭建好RAC環境後,發現在rac2上面無法檢視到listener的狀態,如下:

[oracle@rac2 ~]$ lsnrctl status

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 14-FEB-2011 20:35:41

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

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused


同時,下面的連線命令也不能執行:
sqlplus sys/sys@racdb2 as sysdba

還有就是在測試負載均衡的時候也不行,在網上google了好久,沒有找到解決辦法,倒是看到很多提意見的,毫無疑問的提到了看listener.ora檔案的配置問題,我按照前文的連結安裝的RAC環境,在沒有更改listener.ora檔案時,其內容如下:

[oracle@rac2 admin]$ cat listener.ora 
# listener.ora.rac2 Network Configuration File: /opt/ora10g/product/10.2.0/db_0/network/admin/listener.ora.rac2
# Generated by Oracle configuration tools.

LISTENER_RAC2 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521)(IP = FIRST))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521)(IP = FIRST))
    )
  )

SID_LIST_LISTENER_RAC2 =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /opt/ora10g/product/10.2.0/db_0)
      (PROGRAM = extproc)
    )
  )

而rac1上面這個檔案的內容確和這個不一樣,
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521)(IP = FIRST))
這裡的IP地址是 127.0.0.1

於是我把rac2上的listener.ora檔案更改後並重啟整個RAC的伺服器,再次測試的時候一切正常

lsnrctl status的輸出正常,
sqlplus sys/sys@racdb2 as sysdba也能訪問,
負載均衡的情況測試出來也是對的,
BTW: 負載均衡的配置可以參看下面的文章:
http://www.cnblogs.com/millen/archive/2009/05/06/1450844.html

但是與此不同的是伺服器端的配置我並沒有手動去做,而是安裝完成後就是那樣的了

下面是我本機的tnsnames.ora檔案,這樣的配置是直接在客戶端裡面實現負載均衡,其中
192.168.1.200和192.168.1.201是RAC兩臺伺服器的virtual ip, 這個virtal ip也會在兩臺伺服器
之間漂移的,比如我直接關掉rac1這臺伺服器,那麼這兩個ip就都在rac2上面,但是客戶端的連線肯定是中斷了,還得重新再連一次。
# tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

RACDB =
  (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.200)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.201)(PORT = 1521))
      (LOAD_BALANCE = on)
    (CONNECT_DATA =
      (SERVICE_NAME = racdb)
    )
  )

轉載:http://blog.chinaunix.net/uid-20652643-id-1906515.html

相關文章