ORA-12514: TNS:listener does not currently know of service requested in connect descriptor


一、問題原因

 

用Navicat Premium 連接 Oracle,提示:

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

中文版的提示:

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

 

1、各軟件的版本

Navicat Premium 版本:11.2.14(64-bit)

 

Oracle 版本:10.2.0.1.0(32-bit)

 

 

2、連接方式

 

其中,服務名或SID是默認的ORCL,點擊連接測試,出現上訴的錯誤!

谷歌查詢了一番,折騰了一天,都建議修改 listrner.ora 和 tnsnames.ora 。

這兩個文件的路徑:(我是安裝在C盤)

C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN

listrner.ora源碼:

 1 SID_LIST_LISTENER =
 2   (SID_LIST =
 3     (SID_DESC =
 4       (SID_NAME = PLSExtProc)
 5       (ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server)
 6       (PROGRAM = extproc)
 7     )
 8     (SID_DESC =
 9       (SID_NAME = CLRExtProc)
10       (ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server)
11       (PROGRAM = extproc)
12     )
13   )
14 
15 LISTENER =
16   (DESCRIPTION_LIST =
17     (DESCRIPTION =
18       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
19       (ADDRESS = (PROTOCOL = TCP)(HOST = Darlin-PC)(PORT = 1521))
20     )
21   )
22 
23 DEFAULT_SERVICE_LISTENER = (XE)
View Code

tnsnames.ora源碼:

 1 XE =
 2   (DESCRIPTION =
 3     (ADDRESS = (PROTOCOL = TCP)(HOST = Darlin-PC)(PORT = 1521))
 4     (CONNECT_DATA =
 5       (SERVER = DEDICATED)
 6       (SERVICE_NAME = XE)
 7     )
 8   )
 9 
10 EXTPROC_CONNECTION_DATA =
11   (DESCRIPTION =
12     (ADDRESS_LIST =
13       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
14     )
15     (CONNECT_DATA =
16       (SID = PLSExtProc)
17       (PRESENTATION = RO)
18     )
19   )
20 
21 ORACLR_CONNECTION_DATA = 
22   (DESCRIPTION = 
23     (ADDRESS_LIST = 
24       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) 
25     ) 
26     (CONNECT_DATA = 
27       (SID = CLRExtProc) 
28       (PRESENTATION = RO) 
29     ) 
30   ) 
31 TEST =
32    (DESCRIPTION =
33     (ADDRESS_LIST =
34       (ADDRESS = (PROTOCOL = TCP)(HOST = *<validhost>*)(PORT = *<validport>*))
35     )
36     (CONNECT_DATA =
37       (SERVER = DEDICATED)
38       (SERVICE_NAME = *<servicenamefromDB>*)
39     )
40 )
View Code

 比如說, 有建議在 listrner.ora 的第7行后添加以下代碼:

1 (SID_DESC =
2       (GLOBAL_DBNAME = ORCL)
3       (ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server)
4       (SID_NAME = ORCL)
5     )
View Code

重啟Oracle的服務,問題解決!

 也有建議在 tnsnames.ora 文件中添加以下代碼:

 1 TEST =
 2    (DESCRIPTION =
 3     (ADDRESS_LIST =
 4       (ADDRESS = (PROTOCOL = TCP)(HOST = *<validhost>*)(PORT = *<validport>*))
 5     )
 6     (CONNECT_DATA =
 7       (SERVER = DEDICATED)
 8       (SERVICE_NAME = *<servicenamefromDB>*)
 9     )
10 )
View Code

 

重啟Oracle的服務,問題解決!

然而,在我這里,問題依然沒有解決,沒有解決,沒有解決!!!

 

二、解決方案

 

在我准備放棄的時候,看到 listrner.ora  最后一行有這么一句代碼:

 DEFAULT_SERVICE_LISTENER = (XE)

並且我的Oracle服務如下:

並沒有OracleServiceORCL這一項啊,有的是OracleServiceXE 於是,我就用以下方式連接:

看到這個界面的時候,那個激動啊,折騰了一天了。終於連接成功了!!!

 

三、總結

 

文件 listrner.ora 中配置監聽的服務名是XE, 並且有的是OracleServiceXE。

意思就是,我的服務器名字叫XE,不是默認的ORCL,所以才出現這樣的錯誤!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM