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

Java 連線 Oracle RAC 叢集:JDBC URL 組態與驅動程式選擇指南

     編輯:更多程式設計知識

當 Oracle 資料庫從單節點遷移至 RAC (Real Application Clusters) 叢集架構,原有 JDBC 連線字串與驅動程式可能失效。本文說明正確的連線字串格式、驅動程式版本對照表與遷移關鍵點。

一、Oracle JDBC 驅動程式版本對照表

驅動程式 JARJDK 1.4JDK 1.5JDK 1.6單節點RAC 叢集Class.forName
OracleJdbcDriver9i.jar✓✓✓✓✗oracle.jdbc.OracleDriver
classes12.jar (9i)✓✓✓✓✗oracle.jdbc.OracleDriver
ojdbc14.jar (9i)✓✓✓✓✗oracle.jdbc.OracleDriver
classes12.jar (10g)✓✓✓✓✓oracle.jdbc.OracleDriver
ojdbc14.jar (10g)✓✓✓✓✓oracle.jdbc.OracleDriver
ojdbc5.jar✗✓✓✓✓無需載入 (JDBC 4.0 SPI)
ojdbc6.jar✗✗✓✓✓無需載入 (JDBC 4.0 SPI)

建議:JDK 1.4 專案用 10g 版 classes12.jar 或 ojdbc14.jar;JDK 1.5+ 強烈推薦 ojdbc5/6.jar,支援 JDBC 3.0/4.0 新特性且無需 Class.forName。

二、RAC 叢集連線字串範本

StringBuffer url = new StringBuffer();
url.append("jdbc:oracle:thin:@(description= (address_list =");
url.append("(address=(protocol=tcp)(host=192.168.31.9)(port=1521))");
// 依節點數追加 address 項
// url.append("(address=(protocol=tcp)(host=10.37.27.112)(port=1521))");
url.append("(load_balance=yes)");          // 啟用負載平衡
url.append(")");
url.append("(connect_data =");
url.append("(server = dedicated)");        // 專用伺服器模式
url.append("(service_name=wangjj)");       // 服務名稱 (非 SID)
url.append("(failover_mode =");
url.append("(type=session)");              // 會話故障轉移
url.append("(method=basic)");              // 基本故障轉移 (preconnect 為預連接所有節點)
url.append("(retries=5)");                 // 重試次數
url.append("(delay=15)");                  // 重試間隔(秒)
url.append(")");
url.append(")");
url.append(")");

關鍵參數說明

  • load_balance=yes:客戶端隨機選擇節點分散負載。
  • type=session:現有會話自動切換至可用節點,進行中 SQL 需重新執行。
  • method=basic:首次連接單一節點;preconnect 則預先連接所有節點,故障切換更快但資源消耗大。
  • 使用 service_name 而非 sid,支援叢集服務註冊。

完成驅動程式升級與 URL 重構後,應用即可無縫接入 Oracle RAC 環境。

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