首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

JDBC Thin 連接字串中 SID 與 Service Name 的正確用法

     編輯:Oracle 教學

JDBC Thin 連接字串中 SID 與 Service Name 的正確用法

生產環境專案啟動連接資料庫時拋出 ORA-12505, TNS:listener does not currently know of SID given in connect descriptor 錯誤。原始連接配置如下:

driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@158.58.88.102:1521:eskdb
username=root
password=aaa111

tnsnames.ora 配置:

eskdb=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 158.58.88.102)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = eskdb)))

常見誤區

  • 誤以為 URL 最後一段是資料庫名稱(eskdb),但連接失敗
  • 誤以為是 SERVICE_NAME,但 tnsnames.ora 中已設為 eskdb,仍失敗

根本原因

經 DBA 確認,資料庫實際 SID 為 eskdb1。JDBC Thin 驅動程式的 URL 格式為:

jdbc:oracle:thin:@::

若需使用 Service Name,必須採用完整 TNS 描述符格式:

jdbc:oracle:thin:@//:/

或使用 DESCRIPTION 完整語法。

解決方案

修正 URL 使用正確 SID:

url=jdbc:oracle:thin:@158.58.88.102:1521:eskdb1

重啟專案後連接成功。

關鍵結論

連接格式URL 範例適用場景
SID 格式@host:port:SIDJDBC Thin 簡易格式,需知 SID
Service Name 格式@//host:port/service_name推薦生產環境,支援 RAC/負載均衡
完整 TNS 描述符@(DESCRIPTION=...)複雜網路配置、多地址負載均衡

核心提醒:JDBC Thin 簡易格式 @host:port:xxx 中的 xxx 代表 SID,而非 Service Name。混淆兩者是導致 ORA-12505 的常見原因。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved