ORA-12514 TNS 監聽程序當前無法識別連接描述符中請求服務 的解決方法

        在Windows 64位系統中安裝Oracle11g,配置PL/SQL Developer連接64位數據(http://blog.csdn.net/cselmu9/article/details/8070728/)庫重啓電腦後用SQL Plus可以連接數據庫,但是用PL/SQL Developer連接提示:“ORA-12514 TNS 監聽程序當前無法識別連接描述符中請求服務”。


早上同事用PL/SQL連接虛擬機中的Oracle數據庫,發現又報了“ORA-12514 TNS 監聽程序當前無法識別連接描述符中請求服務”錯誤,幫其解決後,發現很多人遇到過這樣的問題,因此寫着這裏。


也許你沒有遇到過,原因如下:


你oracle安裝成功後,一直未停止數據庫(即數據庫是啓動的),客戶端配置成功後,應該一直不會有什麼問題。


而一旦你和我同事一樣,有時把Oracle安裝在虛擬機中,而且Oracle安裝完畢後,沒在進行任何監聽的配置,則虛擬機再啓動,則就會出現ORA-12514的問題。如下圖


ORA-12514 <wbr>TNS <wbr>監聽程序當前無法識別連接描述符中請求服務 <wbr>的解決方法


如下是解決思路:


根據出錯信息判斷出客戶端未監聽到實例服務名


1、通過重啓服務的方式啓動數據庫,再次連接仍無法連接服務器。


2、既然第一種方法不能解決問題,那就第二種方法。考慮監聽listener.ora


   監聽配置文件listener.ora中可以不必指定監聽的服務名(安裝Oracle10g後也是沒有指定的)。正常情況下一般只要數據庫啓動,客戶端連接數據庫也沒有什麼問題,但是有時重複啓動關閉也會出現ORA-12514錯誤。


   既然listener.ora中沒有指定監聽,我們可以在listener.ora文件中指定監聽的實例名,這樣該問題應該可以連接。


步驟如下:


  • 在oracle服務器Oracle安裝目錄(我的在E:\Oracle10g下,每個人的不一樣,根據自己的情況查找)Network/admin目錄下找到listener.ora 我的如下圖所示


# listener.ora Network Configuration File: E:\Oracle10g\network\admin\listener.ora
# Generated by Oracle configuration tools.


SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = E:\Oracle10g)
      (PROGRAM = extproc)
    )
   (SID_DESC =
    (GLOBAL_DBNAME = ORCL)
    (ORACLE_HOME = E:\Oracle10g)
    (SID_NAME = ORCL)
    )

 )


LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = onest)(PORT = 1521))
    )
  )


標紅的爲我添加的部分,ORCL爲監聽的實例名。


  • 然後在Oracle服務器的服務中重新啓動監聽服務ORA-12514 <wbr>TNS <wbr>監聽程序當前無法識別連接描述符中請求服務 <wbr>的解決方法,然後在oracle客戶端通過再次配置對Orcl實例的監聽,如下圖所示ORA-12514 <wbr>TNS <wbr>監聽程序當前無法識別連接描述符中請求服務 <wbr>的解決方法
  • 結果出現如下圖的提示。
    ORA-12514 <wbr>TNS <wbr>監聽程序當前無法識別連接描述符中請求服務 <wbr>的解決方法
  • 這時我們不要着急,只需要oracle服務器重新啓動一下,再次連接即成功。這也是我們配置完listener.ora 監聽後,經常忘記的。再次嘗試,可以看到客戶端可以連接上oracle服務器了,而且PL/SQL再次連接也沒有問題了。


而有些朋友在配置客戶端時,連接數據庫成功,而使用PL/SQL時,又出現瞭如下圖所示的問題。這又如何解決呢?爲什麼oracle客戶端已經連接成功了,而PL/SQL確不行呢?


ORA-12514 <wbr>TNS <wbr>監聽程序當前無法識別連接描述符中請求服務 <wbr>的解決方法



出現如上的原因是,可能是大家再配置oracle客戶端時,雖然鏈接成功了,步驟上可能有些錯誤。大家使用Net Cofiguration Assistant客戶端時重新配置了Orcl,而不是添加,我們應該如下步驟處理,就不會出問題了。


1、如果Net Cofiguration Assistant中已經有了Orcl。我們可以重新配置


2、如果Net Cofiguration Assistant中沒有Orcl,我們應該添加  具體界面如下圖所示。


ORA-12514 <wbr>TNS <wbr>監聽程序當前無法識別連接描述符中請求服務 <wbr>的解決方法


如果大家該步處理也沒有問題了,listener.ora 修改成功,並且重新啓動了oracle服務器,無論oracle客戶端還是PL/SQL都能夠成功連接數據庫了。


總結一下。當大家遇到“ORA-12514 TNS 監聽程序當前無法識別連接描述符中請求服務”錯誤的解決步驟:


1、通過重啓服務的方式啓動數據庫,再次連接嘗試。


2、如果第一種方法不可行,我們採用第二種方法


  • 正確添加listener.ora;
  • 重新啓動了oracle服務器,並檢查oracle所有服務是否啓動;
  • oracle客戶端Net Cofiguration Assistant正確添加或重新配置實例名 


希望該篇博文,能夠解決大家的問題。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章