Oracle中靜態註冊監聽的問題
問題描述:
用ASP.net基於oracle寫的BS web應用程式,出現一個困擾很久的問題,就是過一段時間就會莫名其妙地出現無法連線資料庫的問題。可是直接通過sqlplus本地連線又是可以的。只能是重啟oracle開頭的所有服務,連線成功。
查詢原因:
剛開始以為是程式的問題,資料庫開了沒關,查找了很久也沒有找到。又以為是iis的問題,重啟iis、設定連線數、配置連線池什麼的都不行。後來偶然發現是因為伺服器重啟導致的,每次重啟之後就發現網站無法連線的問題,有幾次試著重啟tnslisener監聽,發現問題解決。上網發貼問了好久,有個熱心人回答試著在listener.ora中加入靜態註冊。
於是在伺服器重啟之後,利用命令lnsrctl status 檢視監聽程式,果然是服務orcl沒有啟動。在listener.ora中加入靜態註冊之後,再重啟伺服器連線正常。
解決方案:
listener.ora完整檔案,黑體部分是後來新增的靜態註冊檔案。
# listener.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
(GLOBAL_DBNAME = orcl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.13)(PORT = 1521))
)
)
ADR_BASE_LISTENER = D:\app\Administrator
一些猜測:
我本機的配置是 win7 32位+oracle 11g,沒有出現這個問題。
伺服器的配置是windows server 64位+oracle 11g 32 位,會出現這個問題,有可能是系統與資料庫版本相容的問題?