java.sql.SQLException: 接聽器拒絕連線錯誤
執行 test_db.sh Script 有時會導致 java.sql.SQLException: Listener refused the connection with the following error: ORA-12505,
TNS:listener does not currently know of SID given in connect descriptor 錯誤。
症狀
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:743)
at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:662)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:560)
at java.sql.DriverManager.getConnection(DriverManager.java:426)
at java.sql.DriverManager.getConnection(DriverManager.java:474)
at com.ibm.ccd.common.db.TestDB.main(TestDB.java:82)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.net.ns.NSProtocolStream.negotiateConnection(NSProtocolStream.java:275)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:264)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1452)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:496)
... 6 more
test_db.sh Script 會嘗試建立兩種類型的連線:- 用戶端資料庫連線
- JDBC 連線
| 連線類型 | 在埠號之後的語法中使用的特殊字元 | |
|---|---|---|
| 冒號 (:) | 正斜線 (/) | |
| 用戶端資料庫 | 字串被視為本端服務名稱,如果字串存在於 tnsnames.oar 檔案中,則連線成功。 jdbc:oracle:thin:@IP address:port number:mdmdb
mdmdb -將字串視為本端服務名稱 附註: 如果遺漏字串,連線會因
ORA-12154: Unknown service
name 錯誤而失敗。 若要解決,請建立與字串具有相同值的 tns-entry 。 |
字串被視為存在於 Oracle Server 上且已向接聽器登錄且連線成功的 Oracle Database 服務。 jdbc:oracle:thin:@IP address:port number/mdmdb_India
mdmdb_India -將字串視為 Oracle Database 服務名稱 |
| JDBC | 字串被視為 SID ,且連線成功。 jdbc:oracle:thin:@IP address:port number:mdmdb
mdmdb -字串被視為 SID |
|
原因
在 db.xml 檔案中,如果產生的 db_url 在埠號之後具有冒號:,則針對 Oracle Database 12c Release 2 或 Oracle RAC ,將變更為正斜線
/。
解析問題
請按如下所示繼續解決連線問題:- 瀏覽至 $TOP/etc/default 資料夾中的 db.xml 檔案,並將冒號
:
變更為正斜線/
,如強調顯示:<?xml version="1.0" encoding="UTF-8"?> <db_config> <db_userName>PIMDB</db_userName> <db_password_encrypted/> <db_password_plain>PIMDB</db_password_plain> <db_url>jdbc:oracle:thin:@IP address:port number/PIMDB</db_url> <db_class_name>oracle.jdbc.driver.OracleDriver</db_class_name> <db_type>oracle</db_type> </db_config>