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 =目錄,複製目錄不是本機檔案目錄,因此失敗,細節真的很重要!。。。慶幸的是改過來後連線成功了!