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

早上同事用PL/SQL鏈接虛擬機中的Oracle數據庫,發現又報了「ORA-12514 TNS 監聽程序當前沒法識別鏈接描述符中請求服務」錯誤,幫其解決後,發現不少人遇到過這樣的問題,所以寫着這裏。html

也許你沒有遇到過,緣由以下:數據庫

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

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

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

以下是解決思路:url

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

一、經過重啓服務的方式啓動數據庫,再次鏈接仍沒法鏈接服務器。htm

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

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

   既然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,而不是添加,咱們應該以下步驟處理,就不會出問題了。

一、若是Net Cofiguration Assistant中已經有了Orcl。咱們能夠從新配置

二、若是Net Cofiguration Assistant中沒有Orcl,咱們應該添加  具體界面以下圖所示。

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

若是你們該步處理也沒有問題了,listener.ora 修改爲功,而且從新啓動了oracle服務器,不管oracle客戶端仍是PL/SQL都可以成功鏈接數據庫了。

總結一下。當你們遇到「ORA-12514 TNS 監聽程序當前沒法識別鏈接描述符中請求服務」錯誤的解決步驟:

一、經過重啓服務的方式啓動數據庫,再次鏈接嘗試。

二、若是第一種方法不可行,咱們採用第二種方法

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

-------------------------------------------------

在服務端的Net Manager中添加對本機名稱的監聽,而後重啓服務器。

相關文章
相關標籤/搜索