RAC(Real Application Clusters)是 Oracle 最複雜的產品之一,涉及作業系統內核參數、網絡、存儲、集群軟件、數據庫軟件多層耦合。官方文檔多講「怎麼做」,少講「錯了怎麼辦」。本文彙總工程一線 11 大高發故障點與標準化三階段實施路徑。
| # | 檢查點 | 故障現象 | 驗證命令/標準 |
|---|---|---|---|
| 1 | 節點時間同步 | CSSD 心跳超時、節點驅逐、ORA-29701 | ntpdate -q ntp_server、chronyc tracking,偏移 < 100ms,建議配置 chrony 而非 ntpd |
| 2 | 公網 IP 不得使用私有網段 | VIP 故障轉移失敗、SCAN 解析異常 | 公網 NIC 必須綁定路由可達的公網/企業網 IP(非 192.168.x.x/10.x.x.x/172.16-31.x.x) |
| 3 | 公網網卡統一性 | 節點間 HAIP 通信不通、cluvfy 失敗 | 所有節點公網 NIC 名稱、綁定邏輯、MTU(建議 9000)完全一致 |
| 4 | VIP 與公網同子網 | VIP 無法啟動、客戶端連接轉發失敗 | VIP IP/mask/gateway 與公網 NIC 同一子網,srvctl add vip 驗證 |
| 5 | Solaris/AIX 需為 VIP 指定默認網關 | 跨 VLAN 通信失敗 | route add default 持久化至 /etc/defaultrouter 或 SMF |
| 6 | 共享存儲分區可見性 | ASM 磁組創建失敗、ORA-15032 | 所有節點 ls -l /dev/rdsk/... 或 multipath -ll 看到相同 LUN、相同 major/minor、相同權限 |
| 7 | OCR/Vote 磁盤權限與屬主 | Clusterware 啟動失敗、CRS-4000 | 屬主 grid:oinstall,權限 660,原始設備或 ASMFD/AFD 標記正確 |
| 8 | 主機名規範 | cluvfy 校驗失敗、SCAN 解析異常 | 僅小寫字母、數字、連字符(-),禁止下劃線、大寫、點號,/etc/hosts 全節點一致 |
| 9 | 失敗必須完全清理重來 | 殘留配置導致二次安裝詭異錯誤 | crsctl delete cluster、rootcrs.pl -deconfig -force、刪除 /etc/oracle、/opt/ORCLcluster、/var/opt/oracle、/tmp/.oracle |
| 10 | ORACLE_HOME 隔離 | Grid Home 與 DB Home 混淆、補丁衝突 | Grid Home:/u01/app/19.0.0/grid;DB Home:/u01/app/oracle/product/19.0.0/dbhome_1,絕不相同 |
| 11 | 節點間 SSH 互信 | 遠程執行失敗、cluvfy stage -post hwos 失敗 | ssh user@node2 date 無密碼登錄,grid、oracle 用戶雙雙配置,~/.ssh/authorized_keys 權限 600 |
./runcluvfy.sh stage -pre crsinst -n node1,node2 -fixup 生成修復腳本,執行修復。export ORACLE_HOME=/u01/app/19.0.0/grid、export PATH=$ORACLE_HOME/bin:$PATH。./gridSetup.sh(19c+)或 ./runInstaller。$ORACLE_HOME/root.sh,觀察 CRS-4123 成功啟動。crsctl check crs、crsctl status res -t、srvctl status asm。export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1。./runInstaller 選擇「Install database software only」。dbca(圖形/靜默):dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbName racdb -sid racdb -responseFile NO_VALUE -characterSet AL32UTF8 -sysPassword ... -systemPassword ... -createAsContainerDatabase true -numberOfPDBs 1 -pdbName pdb1 -databaseType MULTIPURPOSE -storageType ASM -diskGroup DATA -recoveryGroupRecoveryAreaDestination FRA -totalMemory 8192 -emConfiguration NONEsrvctl status database -d racdb、srvctl status service -d racdb、PDB 狀態 OPEN。tnsnames.ora 使用 SCAN 地址:RACDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = scan-cluster)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = racdb)))crsctl check crs # Clusterware 整體狀態
crsctl status res -t # 所有資源表格狀態
olsnodes -n -p -s # 節點編號、VIP、狀態
srvctl status asm # ASM 實例狀態
srvctl status diskgroup -g DATA # 磁組狀態
srvctl config database -d racdb # 數據庫配置詳情
cluvfy comp clumgr -n all -verbose # 完整集群管理組件驗證
RAC 部署成功 = 作業系統層面零瑕疵(時間、網絡、存儲、權限、主機名、互信) + Grid Infrastructure 安裝零報錯 + 數據庫創建零報錯。將 11 大檢查點做成標準化 cluvfy 前置驗證清單,失敗即全量清理重來,是規避「詭異錯誤」的唯一捷徑。記住:RAC 容不得半點馬虎,細節決定成敗。