動態監聽與靜態監聽的一些特點。

wei-xh發表於2010-05-08
今天同事問我一個問題。
他透過本機客戶端以sysdba身份登陸oracle資料庫後

shutdown immediate成功的關閉了資料庫。
可是
startup
的時候,卻提示
ORA-12514: TNS: 監聽程式當前無法識別連線描述符中請求的服務

我登陸伺服器,檢視listener.ora配置檔案後,發現配置的動態監聽。
動態監聽會時時反應資料庫的狀態,依賴pmon程式的動態註冊,而不像靜態監聽需要載入listener.ora檔案的sid_list_listener部分。

他之所以無法再啟動資料庫,是由於資料庫關閉後,監聽器已經登出了此資料庫的服務資訊,因此無法再進行任何操作。

解決的辦法很容易,只需要在listener.ora檔案中加入如下即可。
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_NAME=rose)
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
      (SID_NAME=ROSE)
    )
)
按照我的方法操作後,重啟監聽,可以順利建立連線,啟動資料庫了。

可是在叢集環境中,不建議採取靜態監聽,因為動態監聽能夠實現一些高階功能。
比如:兩節點的叢集,在一臺例項出現故障的時候,動態監聽能夠自動的failover到其他健康例項。
而且由於動態監聽能夠時時感知伺服器狀態,還能夠實現在客戶端連線時,自動向負載最輕的例項建立連線的功能,實現了負載均衡的目的。

因此,在不修改listener.ora,而且還想啟動資料庫的時候,如果條件允許,可直接登入資料庫伺服器(比如:telnet 16.1.1.121),進行啟動。

[ 本帖最後由 wei-xh 於 2010-5-2 21:31 編輯 ]

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

相關文章