Oracle Real Application Clusters (RAC) 提供集群級高可用與擴展性,是關鍵業務系統的首選部署架構。本文基於 WebSphere Process Server (WPS) 6.2 Stand-alone 架構,詳細記錄 Oracle RAC 兩節點配置全流程:從單節點基線驗證、共享存儲規劃、多實例/多模式用戶創建、權限授予、數據源配置、到故障切換 (Failover) 場景測試驗證。
+----------------+ +----------------+
| Oracle Node 1 | | Oracle Node 2 |
| (Instance 1) | | (Instance 2) |
| Linux Server | | Linux Server |
+-------+--------+ +--------+-------+
| |
| Shared Disk Array |
+-----------+-------------+
| (OCR, Voting Disk, Datafiles, Redologs)
v
+-------+-------+
| ASM Instance | (或共享文件系統)
+---------------+
+----------------+ +----------------+
| WPS Server | | WPS Server | (Stand-alone 雙機或單機)
| (App Tier) | | (App Tier) |
+----------------+ +----------------+
在配置 RAC 前,必須確保單節點 Oracle 與 WPS 連接正常:
ojdbc6.jar (或 classes12.zip 舊版) 複製到 WPS `GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO schema; + GRANT EXECUTE ON DBMS_SYSTEM TO schema; + GRANT JAVAUSERPRIV TO schema;。jdbc:oracle:thin:@//host:1521/service_name,連接池參數調優。| Schema 名稱規則 | WPS 默認組件 | 用途說明 |
|---|---|---|
<SID_Prefix>COMM (如 WPCDB) | WPS 核心配置 | 主配置數據、部署元數據 |
<SID_Prefix>CEID (如 CEIDB) | Common Event Infrastructure (CEI) | 事件路由、訂閱、持久化 |
<SID_Prefix>SS00 (如 SCASYSMSG) | SCA System Bus Messaging Engine | 系統總線消息存儲 |
<SID_Prefix>SA00 (如 SCAAPPMSG) | SCA Application Bus Messaging Engine | 應用總線消息存儲 |
<SID_Prefix>CM00 (如 CEIMSG) | CEI Messaging Engine | CEI 消息引擎存儲 |
<SID_Prefix>BM00 (如 BPCMSG) | Business Process Choreographer Bus | 業務流程編排總線存儲 |
<SID_Prefix>BE00 (如 BPCDB) | BPC Container | 流程實例、任務、上下文數據 |
<SID_Prefix>BC00 (如 BPCOBS) | BPC Explorer (可選) | 流程瀏覽器 UI 數據 |
+DATA (數據文件)、+FRA (快速恢復區)、+OCR (集群註冊表/投票盤)。+ASM1、+ASM2,組成 ASM 集群。dbca -silent -createDatabase \
-gdbName RACDB \
-sid RACDB \
-createAsContainerDatabase false \
-templateName General_Purpose.dbc \
-sysPassword SysPass123! \
-systemPassword SysPass123! \
-emConfiguration NONE \
-storageType ASM \
-diskGroupName +DATA \
-recoveryGroupName +FRA \
-characterSet AL32UTF8 \
-nationalCharacterSet AL16UTF16 \
-totalMemory 8192 \
-databaseType MULTIPURPOSE \
-nodelist node1,node2 \
-instanceNamePrefix RACDB
為 WPS 創建專用服務,啟用負載均衡與故障轉移:
srvctl add service -d RACDB -s WPS_SERVICE -r "RACDB1,RACDB2" -P BASIC -l PRIMARY -e SELECT -m BASIC -w 5 -z 3
srvctl start service -d RACDB -s WPS_SERVICE
-r:首選實例列表-P BASIC:TAF 基本故障轉移 (SELECT 級)-l PRIMARY:目標角色-e SELECT:故障轉移類型 (SELECT 重試查詢)-m BASIC:負載均衡目標確保 SCAN IP 解析到 3 個 VIP,客戶端 JDBC URL 使用 SCAN:
jdbc:oracle:thin:@//scan-cluster:1521/WPS_SERVICE
# 方式一:SCAN + 服務名 (推薦)
jdbc:oracle:thin:@//scan-cluster:1521/WPS_SERVICE
# 方式二:長連接描述符 (支援 FAILOVER/LOAD_BALANCE 參數)
jdbc:oracle:thin:@(DESCRIPTION=
(ADDRESS_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)
(ADDRESS=(PROTOCOL=TCP)(HOST=node1-vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=node2-vip)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME=WPS_SERVICE)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=180)(DELAY=5))))
| 參數 | 建議值 | 說明 |
|---|---|---|
| Minimum connections | 10 | 預熱連接 |
| Maximum connections | 100 | 根據 JVM 堆/DB 最大會話調整 |
| Aged timeout | 300 | 秒,回收空閒連接 |
| Unused timeout | 600 | 秒 |
| Reap time | 180 | 秒,清理線程間隔 |
| Purge policy | EntirePool | 連接失效時清理整個池,強制重建 |
| Validate new connection | true | 獲取前驗證 |
| Validation query | SELECT 1 FROM DUAL | 輕量級驗證 |
-Doracle.net.CONNECT_TIMEOUT=10000
-Doracle.net.READ_TIMEOUT=30000
-Djavax.net.ssl.trustStore=... (若啟用 SSL)
srvctl stop instance -d RACDB -i RACDB1 -o IMMEDIATE (或關機 Node 1)。SQLRecoverableException 重試);事務 (DML) 回滾,應用層需重試業務邏輯。| 現象 | 可能原因 | 解決方案 |
|---|---|---|
| WPS 啟動報 ORA-12514 | 服務名錯誤、Listener 未註冊服務 | 檢查 lsnrctl services、srvctl config service、JDBC URL Service_Name 大小寫 |
| Failover 時應用報 Closed Connection | 連接池未啟用 PurgePolicy、驗證查詢失效 | 設 PurgePolicy=EntirePool、Validation Query=SELECT 1 FROM DUAL、Aged Timeout < 300 |
| RAC 實例間數據不一致 | 未啟用 Cache Fusion、序列/緩存未配置 ORDER/NOORDER | 序列用 CREATE SEQUENCE ... ORDER、全局緩存服務 (GCS) 正常 |
| ASM 磁盤組掛載失敗 | 多路徑配置錯誤、磁盤權限 (oracle:asmadmin 0660) | 檢查 multipath -ll、ls -l /dev/oracleasm/disks/、asmcmd lsdsk |
本文以 Stand-alone 為例。ND 架構 (Deployment Manager + Node Agents) 差異在:
syncNode.sh)。Oracle RAC + WPS 架構的核心在於服務級故障轉移 (TAF/FCF)、SCAN 統一訪問入口、共享存儲數據零丟失、連接池快速感知拓撲變更。落地關鍵:單節點基線先行、Schema 隔離規範、JDBC URL 長描述符、連接池 PurgePolicy、計劃性故障演練常態化。建議引入 Oracle RAC One Node (單實例高可用) 作為過渡,或直接上 19c/21c 長期支持版本,配合 Oracle Clusterware 19c+ 的 Fleeting Resource、Application Continuity 等新特性,構建更彈性的業務平台。