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

JDBC 連接 Oracle 數據庫常見問題排查全攻略

     編輯:Oracle 資料庫基礎

JBuilder 連接 Oracle 9i 關鍵配置

  1. 驅動包:Oracle 8+ 必須使用 classes12.jar(或 ojdbc14.jar 對應 JDK 1.4+)。
  2. Classpath:Windows 系統環境變量、JBuilder Enterprise Setup、Configure Libraries 均需正確添加 classes12.jar 路徑。
  3. Database Pilot 驗證:驅動列表中 Oracle 圖標若為紅色,表示加載失敗,檢查 classpath。
  4. 連接 URL:jdbc:oracle:thin:@hostname:1521:sid(SID 模式)或 jdbc:oracle:thin:@//hostname:1521/service_name(Service Name 模式)。
  5. 用戶名/密碼:確認賬號解鎖、密碼正確、具備 CREATE SESSION 權限。

核心提示:90% JBuilder 連接問題源於 classpath 配置錯誤。

非 XA 模式連接配置(Windows)

# Oracle 10g
Oracle_XA;xaosw;%ORACLE_HOME%\bin\oraxa10.lib %ORACLE_HOME%\precomp\lib\msvc\orasql10.lib

# Oracle 9i
Oracle_XA;xaosw;%ORACLE_HOME%\bin\oraxa9.lib %ORACLE_HOME%\precomp\lib\msvc\orasql9.lib
  • 分隔符為分號 ; 而非冒號 :。
  • 所有 LIB 路徑寫在同一行,空格分隔;未設置 ORACLE_HOME 環境變量時使用絕對路徑。

常見異常與解決方案

1. Java.sql.SQLException: IO異常,不在流模式下

  • 使用 oracle.jdbc.OracleStatement 替代 java.sql.Statement。
  • 若 setAutoCommit 失敗,關閉連接重新獲取。
  • 下載最新 JDBC 驅動;操作 LOB 類型使用 Oracle 專有接口(oracle.sql.BLOB/CLOB)。

2. WebLogic 連接池報錯:The Network Adapter could not establish the connection

  • 檢查監聽器狀態:lsnrctl status。
  • 用 sqlplus 測試直連,排除數據庫端問題。
  • 檢查防火牆、主機名解析、tnsnames.ora 配置。

3. WebLogic + Oracle 連接池 + EXP 備份導致連接池耗盡

現象:後台 exp 備份僅含同義詞的用戶導致 exp 進程僵死,連接池報無可用連接,實際數據庫連接空閒。

根因:Oracle 9i exp Bug,備份同義詞用戶導致進程掛起佔用會話。

解決:殺死 exp、重啟數據庫無效,必須重啟 OS;禁止備份同義詞用戶。

4. Io exception: The Network Adapter could not establish connection

  • 檢查 listener.ora 中 HOST 是否為具體 IP 而非 localhost。
  • 確認 tnsnames.ora 的 HOST/PORT/SERVICE_NAME 與監聽器一致。
  • 驅動版本與數據庫版本匹配(建議驅動版本 ≥ 數據庫版本)。
  • JDK 版本兼容性:JDK 1.6+ 需 ojdbc6.jar,JDK 1.8+ 需 ojdbc8.jar。

最佳實踐清單

  1. 統一使用 ojdbc8.jar(支援 Oracle 11.2+、JDK 1.8+)。
  2. 連接池配置:Test Connections On Reserve、Test Table Name=SQL SELECT 1 FROM DUAL、合理設置 Initial/Max Capacity。
  3. 啟用 oracle.net.CONNECT_TIMEOUT 避免長時間阻塞。
  4. 應用端捕獲 SQLException 並記錄 Error Code、SQL State、堆棧,便於快速定位。
  5. 定期升級驅動與數據庫 PSU,修復已知連接泄漏、死鎖 Bug。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved