2014-09-26 52 views
-1

我可以用TNS式連接描述符成功地連接到我的數據庫:爲什麼我可以輕鬆連接ORA-12514但不能與TNS連接?

connect <user>/<pass>@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=<host>)(Port=<port>))(CONNECT_DATA=(SID=<sid>))); 

但是,當我嘗試連接這樣的:

connect <user>/<pass>@<host>:<port>/<sid>; 

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

爲什麼拳頭指揮工作,但第二個沒有?

回答

3

SID和服務名稱不是一回事。在你的工作版本中,你明確地說你在使用SID,在CONNECT_DATA部分。

當您使用easy connect syntax

CONNECT [email protected][//]host[:port][/[service_name][:server]][/instance_name]] 
Enter password: password 

...你是不是供應SID;你實際上是這樣做的:

connect <user>/<pass>@<host>:<port>/<service_name> 

服務名稱和SID 可能是相同的,但因爲你得到的錯誤,在你的情況下,他們似乎並不如此。如果您有權訪問服務器,則可以運行lsnrctl services以查看哪些服務名稱被識別。或者,如果您可以連接具有足夠權限的用戶可以查詢:

select value from v$parameter where name = 'service_names'; 

有可能是通過兩種方法報告了超過一個服務名,你可能可以使用任何。你可能有一個像<SID>.<domain>這可能是一個明顯的選擇。如果有疑問,但問問你應該使用的DBA。

相關問題