Oracle-11g-R2
如何在 Linux 上使用 DBVisualizer 修復“TNS:listener 目前不知道連接描述符中給出的 SID”?
我正在嘗試從安裝了 Oracle 客戶端的伺服器(RHEL Linux 環境)連接 Oracle 數據庫。我在客戶端機器上安裝了 DB Visualizer。但是在點擊連接按鈕時出現監聽器錯誤。
我已經嘗試過 TNSPING 並通過 SQL Plus 進行連接,兩者都很好。DBViz 中錯誤的可能原因是什麼?我該如何解決?
數據庫連接詳細資訊:
TNS 平
[root@bvqa-emmcas01 bin]# ./tnsping CMSQA Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.160.189.78)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME=CMSQA))) OK (10 msec)
SQL Plus 連接
[root@bvqa-emmcas01 bin]# ./sqlplus temcsys/<password>@CMSQA SQL*Plus: Release 11.2.0.3.0 Production on Tue Mar 24 00:08:35 2015 Release 11.2.0.3.0 Production on Tue Mar 24 00:08:35 2015 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
tnsnames.ora
CMSQA= (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.160.189.78)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME=CMSQA) ) )
DB Visualzier 中的錯誤
Long Message: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
TNS Ping 不關心服務或 SID,它只檢查偵聽器的可用性,因此這並不意味著您的連接字元串是正確的。但是,通過 SQL*Plus 成功連接可以確認這一點。
您的 tnsnames.ora 在 CONNECT_DATA 中使用 SERVICE_NAME,但您的 JDBC URL 使用 SID 語法。SID 和服務名稱是不同的概念,它們的值可以不同。在您的情況下,您可以連接作為服務名稱提供的 CMSQA,但不能作為 SID。
在此語法中,CMSQA 表示 SID:
jdbc:oracle:thin:@10.160.189.78:1521:CMSQA
要將其用作服務名稱,您的連接字元串應為:
jdbc:oracle:thin:@//10.160.189.78:1521/CMSQA