1. 程式人生 > >Oracle中靜態註冊監聽的問題

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 位,會出現這個問題,有可能是系統與資料庫版本相容的問題?