2010-02-18 73 views
6

我試圖連接到安裝在Linux EL 5的Oracle 11g和並收到以下錯誤ORA-12154:TNS:無法解析連接標識符指定

SQL> connect sys/[email protected] as sysdba 
ERROR: 
ORA-12514: TNS:listener does not currently know of service requested in connect 
descriptor 

下我的網絡/管理員的listener.ora如下所示

LISTENER= 
    (DESCRIPTION= 
    (ADDRESS_LIST= 
     (ADDRESS=(PROTOCOL=tcp)(HOST=ud06)(PORT=1521)) 
     (ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))) 

SID_LIST_LISTENER= 
    (SID_LIST= 
    (SID_DESC= 
     (GLOBAL_DBNAME=orcl) 
     (ORACLE_HOME=/home/oracle/app/oracle/product/11g) 
     (SID_NAME=orcl)) 
    (SID_DESC= 
     (SID_NAME=plsextproc) 
     (ORACLE_HOME=/home/oracle/app/oracle/product/11g) 
     (PROGRAM=extproc))) 

我的tnsnames.ora是如下

ORCL = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = orcl) 
    ) 
) 

EXTPROC_CONNECTION_DATA = 
    (DESCRIPTION = 
    (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    ) 
    (CONNECT_DATA = 
     (SID = PLSExtProc) 
     (PRESENTATION = RO) 
    ) 
) 

UD06= 
    (DESCRIPTION = 
    (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = TCP)(HOST = ud06)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
     (SERVICE_NAME = orcl) 
    ) 
) 

MY LSNRCTL狀態顯示s如下:

LSNRCTL> status 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06.us.server.com)(PORT=1521))) 
STATUS of the LISTENER 
------------------------ 
Alias      LISTENER 
Version     TNSLSNR for Linux: Version 11.2.0.1.0 - Production 
Start Date    17-FEB-2010 16:23:06 
Uptime     0 days 0 hr. 12 min. 33 sec 
Trace Level    off 
Security     ON: Local OS Authentication 
SNMP      OFF 
Listener Parameter File /home/oracle/app/oracle/product/11g/network/admin/listener.ora 
Listener Log File   /home/oracle/app/oracle/product/11g/log/diag/tnslsnr/ud06/listener/alert/log.xml 
Listening Endpoints Summary... 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06.us.server.com)(PORT=1521))) 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))) 
Services Summary... 
Service "orcl" has 1 instance(s). 
    Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... 
Service "plsextproc" has 1 instance(s). 
    Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service... 
The command completed successfully 
+0

我在僅安裝了** Oracle Client **的計算機上遇到** ORA-12154 **。我的答案[這裏](http://stackoverflow.com/a/26020374/1497596)。 – DavidRR

回答

4

你可以ping ud06成功(如ud06,而不是ud06.us.server.com)?

什麼命令

lsnrctl services 

說明了什麼?

編輯: 這聽起來像也許數據庫實例名稱實際上不是「orcl」? lsnrctl服務輸出告訴我的是,「orcl」服務雖然在listener.ora文件中定義,但實際上並未運行。

您可以使用服務器上的直接連接登錄嗎?如果是這樣,你用什麼作爲ORACLE_SID環境變量值?以SYS用戶身份登錄併發出命令:

ALTER SYSTEM REGISTER;

然後再次發出lsnrctl服務命令並查看是否有其他實例不顯示。

另外,正如Alex指出的那樣,tnsping命令報告的是完全限定的服務名稱。編輯sqlnet.ora文件並將NAMES.DEFAULT_DOMAIN值設置爲NULL(如果它具有值)。

編輯2:tnsping ud06 在服務器上工作嗎?或者,我認爲客戶端和服務器在不同的系統上是錯誤的?

+0

是的,我可以ping ud06。 此外,當我用tnsping我得到以下 C:\ Documents和Settings \ a.APPLICATIONS>用tnsping ud06 TNS Ping實用工具爲32位Windows:版本10.2.0.1.0 - 生產的17 FEB- 2 010 23:09:16 版權所有(c)1997,2005,Oracle。版權所有。 使用參數文件: 用於HOSTNAME適配器解決試圖聯繫(DESCRIPTION =(CONNECT_DATA =別名 (SERVICE_NAME = ud06.us.server.com))(ADDRESS =(PROTOCOL = TCP)(HOST = 19.148。 (PORT = 1521))) OK(350毫秒) – user275705

+0

lsnrctl顯示如下 – user275705

+0

[oracle @ ud06〜] $ lsnrctl服務 Linux版LSNRCTL:版本11.2.0.1.0 - 2010年2月17日生產23 :13:01 服務「orcl」有1個實例。連接到DESCRIPTION =(ADDRESS =(PROTOCOL = tcp)(HOST = ud06)(PORT = 1521))) 服務摘要... 服務「orcl」有1個實例。 實例「orcl」,狀態UNKNOWN,對此服務具有1個處理程序...處理程序: 「DEDICATED」已建立:1已拒絕:0 本地服務器 服務「plsextproc」有1個實例(s) 。 實例「plsextproc」,狀態未知有此服務處理程序(一個或多個)處理器(S):設立「專用」:0拒絕:0 本地服務器命令成功完成 – user275705

1

SERVICE_NAME中的tnsping輸出與tnsnames.ora中的條目不匹配;該文件來自Windows盒子還是Linux盒子?它看起來像你不必爲u06本地(Windows)中tnsnames.ora進入和它的猜測哪些服務名稱應該擴大它 - 我認爲這是什麼參考主機適配器機構。

0

我也碰到ORA-12154:TNS:無法解析連接標識符指定,並添加用戶試圖連接到固定它oinstall組甲骨文。

5

回答這個問題很簡單。不要擔心.ora文件或任何其他配置。甲骨文所做的一切都很完美。

只有當通過命令行連接,它就會與那些在他們一個@符號的密碼混淆。

因此,當通過命令行SQL進行連接時,不要使用帶有'@'的密碼。只需使用Web界面創建一個帳戶,其中有一個不帶'@'符號的密碼。

那就是!問題解決了。我已經打破了我的頭幾天,現在我的問題解決了!

0

首先嚐試Oracle實例是否啓動

對於Windows:

開始 - >配置面板 - >管理touls->服務 - > OracleServiceORCL的(我的方式實例) - >啓動

0

提供連接字符串是這樣的:

服務器名稱:端口/服務名稱;用戶名;密碼

Add connection image

0

我也面臨着同樣的錯誤,試試這個代碼:

SQL> conn hr/hr @pdborcl; 

如果你發現同樣的錯誤,這意味着你有不同的可插拔的數據庫名稱。通過剛剛在sqlplus

sql> SELECT name, con_id FROM v$pdbs; 
0

寫下面的命令 檢查可插拔數據庫的名字,我固定使用這個步驟這個問題。

首先,如果您沒有安裝相同的目錄或驅動器,則會發生此錯誤。

但是答案在這裏。

  1. 以管理員身份登錄窗口。
  2. 轉到控制面板。
  3. 系統屬性,然後單擊環境
  4. 找到OS變量和更改名稱爲 「TNS_ADMIN」

    enter image description here

  5. 更改數值爲 「TNSNAMES的目錄地址」 enter image description here

  6. 重新啓動系統。

  7. 議論。
相關問題