Oracle-11g-R2

如何在 Linux 上使用 DBVisualizer 修復“TNS:listener 目前不知道連接描述符中給出的 SID”?

  • December 1, 2015

我正在嘗試從安裝了 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

引用自:https://dba.stackexchange.com/questions/96064