通過11.2監聽連線9.2資料庫報錯ORA-12537

yangtingkun發表於2010-01-23

在一個Linux 64位平臺上,安裝了11.2版本和9.2版本兩個資料庫,啟動11.2的監聽,嘗試連線9.2的資料庫報錯ORA-12537

 

 

詳細的錯誤資訊如下:

[oracle@bjtest admin]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 1 18 18:31:37 2010

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

SQL> conn ndmain/ndmain@172.25.198.230/bjtrade
ERROR:
ORA-12537: TNS:
連線關閉


SQL> conn ndmain/ndmain@172.25.198.230/test112
ERROR:
ORA-01017: invalid username/password; logon denied

連線11.2的資料庫沒有問題,這裡報錯是由於密碼不正確,但是網路連線顯然是正確的。

ORA-12537: TNS:connection closed
Cause: "End of file" condition has been reached; partner has disconnected.
Action: None needed; this is an information message.

Oracle的錯誤文件的說明非常的不靠譜,看來只能查詢METALINK了。發現metalink上有不少和ORA-12537有關的bug,但是根據這些描述進行設定後,問題無法解決:

[oracle@bjtest admin]$ pwd
/data/oracle/product/11.2/network/admin
[oracle@bjtest admin]$ more listener.ora
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /opt/oracle/product/9.2)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (ORACLE_HOME = /opt/oracle/product/9.2)
      (SID_NAME = bjtrade)
      (ENVS = "LD_LIBRARY_PATH_64=/opt/oracle/product/9.2/lib")
    )
    (SID_DESC =
      (GLOBAL_DBNAME = test112)
      (ORACLE_HOME = /data/oracle/product/11.2)
      (SID_NAME = test112)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
      )
    )
  )

在監聽配置檔案listener.ora中增加LD_LIBRARY_PATHLD_LIBRARY_PATH_64ENVS引數,問題依舊。

如果嘗試使用9.2的監聽,則9i的連線正常,11g連線報錯:

SQL> conn test/test@172.25.198.230/BJTRADE
已連線。
SQL> conn test/test@172.25.198.230/test112
ERROR:
ORA-12500: TNS:
監聽程式無法啟動專用伺服器程式

對應的監聽資訊為:

[oracle@bjtest ~]$ lsnrctl status

LSNRCTL for Linux: Version 9.2.0.4.0 - Production on 19-1 -2010 03:58:59

Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.

正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1521)))
LISTENER
STATUS
------------------------
別名                      LISTENER
版本                      TNSLSNR for Linux: Version 9.2.0.4.0 - Production
啟動日期                  18-1 -2010 19:58:21
正常執行時間              0 8 小時 0 37
跟蹤級別                  off
安全性                    OFF
SNMP                      OFF
監聽器引數檔案          /opt/oracle/product/9.2/network/admin/listener.ora
監聽器日誌檔案          /opt/oracle/product/9.2/network/log/listener.log
監聽端點概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bjtest)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bjtest)(PORT=8080))(Presentation=HTTP)(Session=RAW))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bjtest)(PORT=2100))(Presentation=FTP)(Session=RAW))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
 
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
服務 "ZHIFU" 包含 1 個例程。
 
例程 "ZHIFU", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
服務 "bjtest" 包含 2 個例程。
 
例程 "bjtest", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
 
例程 "bjtest", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "bjtestXDB" 包含 1 個例程。
 
例程 "bjtest", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "bjtrade" 包含 2 個例程。
 
例程 "bjtrade", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
 
例程 "bjtrade", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "bjtradeXDB" 包含 1 個例程。
 
例程 "bjtrade", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "test112" 包含 1 個例程。
 
例程 "test112", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
命令執行成功

使用11.2的監聽,9.2資料庫無法訪問,使用9.2的監聽,11.2的資料庫又無法訪問,看來只能使用雙監聽了,修改11.2的監聽,使其監聽1522埠:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1522))
      )
    )
  )

[oracle@bjtest admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 19-1 -2010 04:02:48

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

啟動/data/oracle/product/11.2/bin/tnslsnr: 請稍候...

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
系統引數檔案為/data/oracle/product/11.2/network/admin/listener.ora
寫入/data/oracle/diag/tnslsnr/bjtest/listener/alert/log.xml的日誌資訊
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bjtest)(PORT=1522)))

正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))
LISTENER
STATUS
------------------------
別名                      LISTENER
版本                      TNSLSNR for Linux: Version 11.2.0.1.0 - Production
啟動日期                  19-1 -2010 04:02:48
正常執行時間              0 0 小時 0 0
跟蹤級別                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
監聽程式引數檔案          /data/oracle/product/11.2/network/admin/listener.ora
監聽程式日誌檔案          /data/oracle/diag/tnslsnr/bjtest/listener/alert/log.xml
監聽端點概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bjtest)(PORT=1522)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例項。
 
例項 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
服務 "bjtrade" 包含 1 個例項。
 
例項 "bjtrade", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
服務 "test112" 包含 1 個例項。
 
例項 "test112", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
命令執行成功

SQL> conn test/test@172.25.198.230/BJTRADE
已連線。
SQL> conn test/TEST@172.25.198.230:1522/test112
已連線。

看來Oracle的監聽還存在不少多版本相容問題。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-625848/,如需轉載,請註明出處,否則將追究法律責任。

相關文章