通過11.2監聽連線9.2資料庫報錯ORA-12537
在一個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_PATH或LD_LIBRARY_PATH_64的ENVS引數,問題依舊。
如果嘗試使用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 11.2通過資料庫鏈呼叫10.2過程報錯資料庫
- 11.2資料庫監聽的改變資料庫
- ORA-12537 TNS:資料庫連線錯誤資料庫
- 【LISTENER】Oracle通過監聽連線緩慢分析Oracle
- 監聽狀態正常,但是資料庫不能連線,提示沒有監聽....資料庫
- 客戶端通過SCAN連線11g Oracle RAC報錯ORA-12537客戶端Oracle
- 1.3.3. 通過SQL*Plus 連線資料庫SQL資料庫
- 通過cmd命令列連線mysql資料庫命令列MySql資料庫
- Qt中通過ODBC連線MSSQL資料庫QTSQL資料庫
- 網路裝置重啟造成rac監聽故障連線資料庫報ora-12170:TNS:連線超時的錯誤資料庫
- java通過jdbc連線oracle報錯No suitable driverJavaJDBCOracleUI
- 通過Java程式測試資料庫連線資訊Java資料庫
- 通過連線檢視資料庫相關資訊資料庫
- 遠端通過監聽連線報ORA-01034故障處理一例
- 連線資料庫出錯???資料庫
- 成為MySQL DBA後,再看ORACLE資料庫(二、監聽與連線)MySqlOracle資料庫
- Java的JDBC通過SSH Tunnel連線MySQL資料庫JavaJDBCMySql資料庫
- 通過觸發器記錄資料庫連線資訊觸發器資料庫
- mysql--通過cmd連線mysql,並建立資料庫MySql資料庫
- 客戶端連線資料時會報“ORA-12537:TNS連線已關閉”客戶端
- Oracle 11gR2 RAC連線報錯ora-12537錯誤Oracle
- Oracle資料庫監聽Oracle資料庫
- 連線資料庫報錯ORA-12514資料庫
- 連線資料庫報錯 ORA-12514資料庫
- 請教。在ejb中用DataSource連線資料庫,報錯!資料庫
- PLSQL Developer 客戶端沒有TNS監聽,無法連線資料庫SQLDeveloper客戶端資料庫
- 資料庫的連線過程資料庫
- root 使用者通過 sqlplus 連線資料庫SQL資料庫
- 通過命令列連線oracle資料庫/進入sql plus命令列Oracle資料庫SQL
- java通過jdbc連結資料庫JavaJDBC資料庫
- deleted事件監聽報錯delete事件
- 連線oracle資料庫時,報錯:{dataSource-1} init errorOracle資料庫Error
- cacti登陸出現報錯:資料庫無法連線資料庫
- 我的postgresql資料庫報埠錯誤,連線失敗SQL資料庫
- 11G RAC 一節點當機後修改監聽相關配置使通過當機節點VIP連線資料庫的客戶端可以連線資料庫客戶端
- 啟動資料庫監聽資料庫
- 資料庫開啟監聽資料庫
- Oracle 11g RAC通過SCAN IP連線資料庫 - JDBC連線串問題Oracle資料庫JDBC