1. 程式人生 > 資料庫 >oracle 報錯ORA-12514: TNS:listener does not currently know of service requested in connec

oracle 報錯ORA-12514: TNS:listener does not currently know of service requested in connec

  原文地址:https://www.cnblogs.com/qin10086/p/5692162.html

  在使用navicat上連線oracle正確使用者名稱和密碼,oracle常用服務也啟動的情況下依然無法建立連線。但是sqlPus上輸入使用者名稱和密碼可以連線通過,百思不得其解(菜鳥本質 好奇)。

這種情況下查看了navicat的歷史日誌:ORA-12514: TNS:listener does not currently know of service requested in connect。

  通過網上搜索查到說 navicat工具是32位,oracle64位不匹配,心想很有可能是這原因。因此通過博友給出的路徑http://www.oracle.com/technetwork/topics/winsoft-085727.html下載到instantclient-basic-nt-11.2.0.3.0.zip (51,149,941 bytes) 解壓(對於需要到的資料記住目錄)。但是在navicat工具-選項-OCI 更改路徑。重新連線,失敗!重啟再試,依然連線報錯。問題回到報錯ORA-12514: listener does not currently know of service requested in connect偵聽器目前並不知道連線的服務請求。既然listener 不知道怎麼讓它知道呢?為什麼不知道?好難懂呀難道是安裝oracle失敗了 但是sqlPus上連線又為什麼又通過了?為解決疑問重新安裝了oracle 在安裝前了解除安裝,控制面板上沒有此軟體,軟體管家倒是有,總之問題多多。解除安裝 刪除 清理登錄檔(執行regedit 大致在services下面)否則無法重灌oracle。重新安裝連線依然不行。問題還是回到了listener does not currently know of service requested in connect偵聽器目前並不知道連線的服務請求,怎樣能讓listener know?

  通過上網查到可通過修改listener.ora檔案解決。http://blog.csdn.net/icqsky/article/details/4313791

添加了一段在安裝目錄E:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN 下檔案修改了家上一段複製的程式碼(藍色部分):

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = E:\app\Administrator\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:E:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )(SID_DESC =
    (GLOBAL_DBNAME = ORCL)
    (ORACLE_HOME = E:\app\Administrator\product\11.2.0\dbhome_1)
    (SID_NAME = ORCL)
    )
  )

關掉Service和LISTENER,再啟動Service和LISTENER。最開始複製未留意到ORACLE_HOME =目錄,複製目錄不是本機檔案目錄,因此失敗,細節真的很重要!。。。慶幸的是改過來後連線成功了!