ORA-12514: TNS: 監聽程序當前沒法識別鏈接描述符中請求的服務 問題解決

ORA-12514: TNS: 監聽程序當前沒法識別鏈接描述符中請求的服務 問題解決

 

    近日在配置Oracle 10G的流複製環境時,遇到一個問題,關閉數據庫(shutdown immediate)後,經過SQL Plus鏈接數據庫:conn sys/his@orc0 as sysdba,出現以下錯誤:html

    ORA-12514: TNS: 監聽程序當前沒法識別鏈接描述符中請求的服務sql

經過重啓服務的方式啓動數據庫,再次鏈接卻能成功登陸,也就是說在關閉數據庫狀態下沒法鏈接服務器。數據庫

    開始覺得是系統環境變量Oracle_SID的配置問題,由於機器有多個實例,一陣折騰後仍是不能鏈接。後來查資料得知:服務器

    Oracle9i之後,後臺進程PMON自動在監聽器中註冊在系統參數SERVICE_NAMES中定義的服務名,SERVICE_NAMES默認爲DB_NAME+DOMAIN_NAME。監聽配置文件listener.ora中能夠沒必要指定監聽的服務名。可是,當數據庫處於關閉狀態下PMON進程沒有啓動,也就不會自動註冊監聽的實例名,因此使用sqlplus sys/his@orc0 as sysdba 會出現ORA-12514錯誤。oracle

若是在listener.ora文件中指定監聽的實例名,則即便數據庫處於關閉狀態,仍然能夠鏈接。spa

listener.orahtm

SID_LIST_LISTENER =blog

  (SID_LIST =進程

    (SID_DESC =ci

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = G:\oracle\product\10.2.0\db_1)

      (PROGRAM = extproc)

    )

   (SID_DESC =

    (GLOBAL_DBNAME = ORCL)

    (ORACLE_HOME = G:\oracle\product\10.2.0\db_1)  

    (SID_NAME = ORCL)

    )

  )

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = zyk)(PORT = 1521))

    )

  )

 

以上粗體部件爲增長的內容,修改後重啓監聽服務後便可。

附:經過在lsnrctl中輸入set display verbose,而後再經過命令service查看,服務狀態爲READY表示PMON自動註冊的服務名,而UNKNOWN則表示該服務是手工在LISTENER.ORA中配置的數據庫服務。

相關文章
相關標籤/搜索