
簡介這份Oracle 19c RAC on Linux 7.6安裝手冊面向Linux運維工程師與DBA重點解決RedHat 7.6環(huán)境從零搭建19c RAC的流程問題。內(nèi)容覆蓋GNS配置SCAN、Flex ASM機(jī)制介紹、12.2之后Standalone Cluster與Domain Service Cluster兩種集群模式差異并給出配置中典型報錯的原因分析與排錯思路。文檔為單個docx文件壓縮包約160KB按清晰目錄組織章節(jié)從OS環(huán)境檢查、關(guān)閉THP與開啟Hugepages、依賴軟件包安裝、內(nèi)核參數(shù)配置到固定IP/GNS網(wǎng)絡(luò)方案及時鐘同步逐項展開便于對照實施。已有716人學(xué)習(xí)下載適合需要理解GNS域名解析與SCAN工作機(jī)制、并希望獲得實用問題排查方法的初中級DBA參考。1. Oracle 19c RAC on Linux 7.6為什么值得照著這份手冊裝一遍數(shù)據(jù)庫凌晨兩點自動重啟就因為一臺物理機(jī)的內(nèi)存報警——這是沒上 RAC 之前最常見的夜班劇情。Oracle 19c RACReal Application Clusters把兩個節(jié)點的算力和內(nèi)存放進(jìn)同一個集群數(shù)據(jù)放在共享存儲上由 ASM 統(tǒng)一管理一個節(jié)點故障業(yè)務(wù)連接自動漂移到另一個節(jié)點應(yīng)用幾乎無感知。Linux 7.6 是跑 19c RAC 非常穩(wěn)妥的底包這份安裝手冊的落地路徑就是準(zhǔn)備系統(tǒng)、規(guī)劃網(wǎng)絡(luò)與共享盤、裝 Grid Infrastructure、裝數(shù)據(jù)庫軟件、建 RAC 庫。適合正在做高可用改造的 DBA、準(zhǔn)備從單機(jī)往集群遷移的運維以及第一次獨立裝 RAC 就要面對生產(chǎn)環(huán)境的人。它不是概念科普是我按生產(chǎn)環(huán)境標(biāo)準(zhǔn)反復(fù)走過的一整套可復(fù)現(xiàn)流程。2. 安裝前的準(zhǔn)備把 Linux 7.6 調(diào)成能跑 RAC 的狀態(tài)2.1 硬件與版本核對先確認(rèn)機(jī)器配不配RAC 對硬件的要求不高但對一致性要求很高。最怕兩節(jié)點配置不對稱比如一個節(jié)點 8 核 16GB另一個 4 核 8GB平時沒事故障切換時慢節(jié)點拖垮整個集群。我一般先做一輪最小配置核對CPU 至少 2 核生產(chǎn)建議 8 核以上、內(nèi)存至少 8GB生產(chǎn)建議 16GB 起步、/u01 目錄預(yù)留 100GB 以上、/tmp 至少 2GB。兩節(jié)點的主機(jī)名、內(nèi)核版本、架構(gòu)必須一致操作系統(tǒng)補丁級別也要對齊。uname -r free -g df -h /u01 /tmp lscpu | grep Model name這段命令看四件事內(nèi)核版本是否一致、內(nèi)存是否達(dá)標(biāo)、/u01 和 /tmp 是否夠用、CPU 型號是否統(tǒng)一。RAC 里有個隱藏的坑如果兩節(jié)點 /etc/hosts 里寫的主機(jī)名不同后續(xù) Grid Infrastructure 安裝時 gpnp 配置文件會生成兩套不同的節(jié)點身份root.sh 階段大概率翻車。所以第一件事是把主機(jī)名固定下來安裝全程不要改。我還會順手檢查時間同步。19c 集群對節(jié)點間時鐘偏差很敏感偏差超過一定閾值crsd 會主動踢節(jié)點。Linux 7.6 自帶 chronyd安裝前把時間源配好確認(rèn) chronyc sources 能看到同步源比裝完再折騰省事得多。systemctl enable chronyd --now chronyc sources -v timedatectl status2.2 內(nèi)核參數(shù)與系統(tǒng)限制一批 sysctl 搞定Oracle 官方對 Linux 7.6 跑 19c 有明確的 sysctl 建議但網(wǎng)上流傳的版本五花八門。我習(xí)慣把這組參數(shù)直接寫進(jìn) /etc/sysctl.conf前兩節(jié)點內(nèi)容保持一致執(zhí)行 sysctl -p 生效。下面這組是經(jīng)過生產(chǎn)驗證的重點是信號量和網(wǎng)絡(luò)緩沖區(qū)。cat /etc/sysctl.conf EOF fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 1073741824 kernel.shmmax 4398046511104 kernel.shmmni 4096 kernel.sem 250 32000 100 128 net.core.rmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_default 262144 net.core.wmem_max 4194304 net.ipv4.conf.all.rp_filter 2 net.ipv4.conf.default.rp_filter 2 net.ipv4.conf.all.accept_source_route 0 net.ipv4.conf.default.accept_source_route 0 vm.swappiness 10 vm.dirty_ratio 30 vm.dirty_background_ratio 3 vm.min_free_kbytes 524288 EOF sysctl -p參數(shù)說明kernel.sem 四個值分別是信號量數(shù)組最大長度、系統(tǒng)內(nèi)最大信號量數(shù)、每次操作最大信號量數(shù)、最大信號量集合數(shù)RAC 的集群進(jìn)程和 ASM 后臺進(jìn)程對信號量消耗很大這四個值不能省。net.core.rmem_max 和 wmem_max 決定集群節(jié)點間通信私有網(wǎng)絡(luò)的緩沖區(qū)上限19c 的 HAIP 和緩存融合都依賴它。vm.min_free_kbytes 設(shè)置為 524288約 512MB是為了防止內(nèi)存壓力過大時節(jié)點 hang 住這在 Linux 7.6 的內(nèi)核上尤其重要。rp_filter 設(shè)置為 2 是嚴(yán)格反向路徑過濾防止私有網(wǎng)卡收到異常源地址的包導(dǎo)致集群腦裂。2.3 用戶、組與環(huán)境變量把運行權(quán)限對齊RAC 安裝需要兩個操作系統(tǒng)用戶grid 和 oracle分別對應(yīng) Grid Infrastructure 和數(shù)據(jù)庫軟件。組的劃分有講究最少要建 oinstall、dba、asmadmin、asmdba、asmoper 五個組grid 用戶的主組用 oinstall附加組加上 dba、asmadmin、asmdba、asmoperoracle 用戶主組用 oinstall附加組加 dba、asmdba。這樣設(shè)計的目的是讓 ASM 實例歸 grid 管數(shù)據(jù)庫實例歸 oracle 管權(quán)限互不越界。groupadd oinstall groupadd dba groupadd asmadmin groupadd asmdba groupadd asmoper useradd -g oinstall -G dba,asmdba,asmadmin,asmoper grid useradd -g oinstall -G dba,asmdba oracle mkdir -p /u01/app/19.0.0/grid mkdir -p /u01/app/oracle chown -R grid:oinstall /u01/app/19.0.0/grid chown -R oracle:oinstall /u01/app/oracle19c 的 Grid Infrastructure 安裝目錄默認(rèn)是 /u01/app/19.0.0/grid和 oracle 用戶的 ORACLE_HOME 分開。目錄權(quán)限錯了安裝界面會在目錄檢查步驟報錯提前把屬主設(shè)對能省一次重跑。兩個用戶在 /etc/security/limits.conf 里還需要放開文件描述符和進(jìn)程數(shù)限制否則 RAC 跑起來后監(jiān)聽和后臺進(jìn)程可能報 too many open files。cat /etc/security/limits.conf EOF grid soft nofile 1024 grid hard nofile 65536 grid soft nproc 2047 grid hard nproc 16384 grid soft stack 10240 grid hard stack 32768 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft stack 10240 oracle hard stack 32768 EOF環(huán)境變量我一般寫在每個用戶家目錄的 .bash_profile 里而不是 /etc/profile。ORACLE_BASE、ORACLE_HOME、PATH 這些變量指向清晰后面跑安裝腳本和 sqlplus 都不用手動 export。注意 grid 用戶和 oracle 用戶的 ORACLE_HOME 不一樣混著寫容易在 DBCA 建庫時報出奇怪的路徑錯誤。2.4 RPM 依賴核查少一個包安裝界面就停在預(yù)檢查Linux 7.6 最小化安裝后缺不少軟件包Oracle 的安裝向?qū)г陬A(yù)檢查階段會列出來但那時再回頭裝就慢了。我習(xí)慣提前把依賴一次性裝好。19c 在 Linux 7.6 上必須要 compat-openssl10這是最容易漏的包少了它 OUI 預(yù)檢查直接報錯。yum install -y bc binutils compat-libcap1 compat-libstdc-33 \ compat-openssl10 elfutils-libelf elfutils-libelf-devel \ gcc gcc-c glibc glibc-devel ksh libaio libaio-devel \ libX11 libXau libXi libXtst libXrender libXext make \ net-tools nfs-utils smartmontools sysstat libnsl rpm -qa | grep -E compat-openssl10|libnsl|sysstat最后一條 rpm 查詢是確認(rèn)關(guān)鍵包已經(jīng)裝上。libnsl 在 Linux 7.6 里默認(rèn)不裝而 19c 的客戶端工具在解析主機(jī)名時需要它沒裝會在運行 dbca 時碰上詭異的段錯誤。sysstat 提供 sar 命令后面排查性能問題要用它看歷史負(fù)載一次裝齊不后悔。如果公司內(nèi)部有統(tǒng)一的 yum 源建議在安裝前就把這些依賴固化到主機(jī)初始化腳本里每個新節(jié)點跑一遍即可。3. 網(wǎng)絡(luò)與共享存儲RAC 的血管和倉庫3.1 網(wǎng)卡與 IP 規(guī)劃public/private/VIP/SCAN 一張圖畫清RAC 網(wǎng)絡(luò)是整個集群最容易出問題的部分規(guī)劃階段畫一張清晰的 IP 分配表比任何配置都重要。每個節(jié)點至少需要兩塊物理網(wǎng)卡public 網(wǎng)卡承載業(yè)務(wù)連接、VIP 和 SCAN 監(jiān)聽private 網(wǎng)卡承載節(jié)點間心跳、緩存融合和集群消息。private 網(wǎng)絡(luò)絕對不能用 public 網(wǎng)段否則一旦 public 網(wǎng)絡(luò)抖動集群通信和業(yè)務(wù)流量互相干擾容易引發(fā)節(jié)點驅(qū)逐。節(jié)點網(wǎng)卡IP 地址用途node1eth0192.168.10.11public / 業(yè)務(wù)網(wǎng)node1eth110.0.0.11private / 集群心跳node1eth0:1192.168.10.21VIP由集群管理node2eth0192.168.10.12public / 業(yè)務(wù)網(wǎng)node2eth110.0.0.12private / 集群心跳node2eth0:1192.168.10.22VIP由集群管理--192.168.10.31-33SCAN IPDNS 或 hostsVIP 由 Grid Infrastructure 自動綁定到 public 網(wǎng)卡上不需要手工配 IP安裝向?qū)Ю锇?public 網(wǎng)卡選對就行。SCAN IP 在 19c 里建議配 3 個客戶端通過 SCAN 名稱連接時會在多個 IP 之間做負(fù)載均衡。如果沒有 DNS 環(huán)境也可以把 SCAN 寫在 /etc/hosts 里但必須保證集群內(nèi)所有節(jié)點和客戶端機(jī)器上的解析結(jié)果一致。3.2 hosts 文件與 SSH 互信裝到一半才配就晚了hosts 文件是 RAC 安裝里最基礎(chǔ)也最容易被忽視的文件。兩個節(jié)點必須包含完整的條目節(jié)點名、隨后是 VIP 名、private 名、SCAN 名。有一類典型故障是 private 主機(jī)名寫進(jìn)了公網(wǎng) hosts導(dǎo)致集群在解析內(nèi)部主機(jī)名時走了錯誤網(wǎng)段私網(wǎng)心跳時斷時續(xù)。cat /etc/hosts EOF 192.168.10.11 node1.example.com node1 192.168.10.12 node2.example.com node2 192.168.10.21 node1-vip.example.com node1-vip 192.168.10.22 node2-vip.example.com node2-vip 10.0.0.11 node1-priv.example.com node1-priv 10.0.0.12 node2-priv.example.com node2-priv 192.168.10.31 rac-scan.example.com rac-scan EOF配置完成后用 getent hosts 驗證每個名字解析出的 IP 是否正確。private 主機(jī)名盡量用 -priv 后綴區(qū)分不要和 public 名稱混用。SSH 互信是安裝向?qū)ё詣优渲玫牡崆笆謩优浜酶€(wěn)妥兩個用戶的公鑰都要互相分發(fā)否則 OUI 檢查 SSH 連通性那一步會卡住。ssh-keygen -t rsa -N -f ~/.ssh/id_rsa ssh-copy-id -i ~/.ssh/id_rsa.pub node1 ssh-copy-id -i ~/.ssh/id_rsa.pub node2 ssh node1 date; ssh node2 date最后一條命令同時驗證了 SSH 免密和時間一致性。注意 grid 用戶和 oracle 用戶都要各配一次別只配了 oracle 用戶的安裝 Grid Infrastructure 時用 grid 用戶執(zhí)行腳本會報權(quán)限錯誤。3.3 共享存儲與 ASM 磁盤udev 綁定避免漂移RAC 的數(shù)據(jù)庫文件必須放在共享存儲上。常見做法是兩臺機(jī)器通過光纖或 iSCSI 連接到同一套存儲劃分出若干 LUN 作為 ASM 磁盤。安裝前在兩臺機(jī)器上都執(zhí)行 lsblk確認(rèn)看到的 LUN 數(shù)量、大小一致。這里有個關(guān)鍵的玄學(xué)問題Linux 對 SCSI 盤的設(shè)備名分配不保證穩(wěn)定重啟后 /dev/sdb 可能變成 /dev/sdc直接裸用設(shè)備名做 ASM 盤重啟后磁盤權(quán)限和路徑全亂。解決辦法是用 udev 規(guī)則按磁盤的 WWID 綁定固定設(shè)備名。ls /dev/sd* udevadm info --queryproperty --name/dev/sdb | grep ID_SERIALcat /etc/udev/rules.d/99-oracle-asm.rules EOF KERNELsd?1, SUBSYSTEMblock, PROGRAM/usr/lib/udev/scsi_id -g -u -d /dev/$parent, RESULT3600a0b00000abc123, OWNERgrid, GROUPasmadmin, MODE0660 EOF udevadm control --reload udevadm trigger ls -l /dev/sd?1RESULT 后面跟的是通過 scsi_id 查到的 LUN 唯一標(biāo)識。生產(chǎn)環(huán)境的 LUN 數(shù)量多我習(xí)慣把規(guī)則文件按 WWID 一條條寫清楚每個磁盤對應(yīng)一個固定名稱避免靠設(shè)備名猜。寫在 99- 開頭的規(guī)則文件里確保不會被其他規(guī)則覆蓋。權(quán)限必須是 grid:asmadminMODE 660如果屬主不對ASM 實例在 OUI 里會發(fā)現(xiàn)磁盤但標(biāo)紅不可用。4. 裝 Grid InfrastructureRAC 的骨架和第一道坎4.1 用 runcluvfy.sh 做安裝前體檢預(yù)檢查就是后悔藥Grid Infrastructure 是整個 RAC 的骨架裝它之前先跑一遍 Oracle 自帶的集群驗證工具。這個工具會檢查硬件、內(nèi)核參數(shù)、依賴包、網(wǎng)絡(luò)連通性、SSH 互信等所有前置條件比人工逐項核對快得多。命令在安裝介質(zhì)解壓后的目錄下執(zhí)行。cd /u01/grid_setup ./runcluvfy.sh stage -pre crsinst -n node1,node2執(zhí)行完看輸出里的 Check passed 和 Check failed。遇到 failed 項目按它提示的路徑去修比如某個包沒裝、某個 sysctl 參數(shù)不匹配。有個小技巧先看 Summary 段不要盯著幾百行滾動輸出從頭看。如果這臺機(jī)器以前裝過其他 Oracle 軟件cvu 會提示環(huán)境變量殘留在 /etc/profile 里順手清掉再跑否則后面 OUI 會被舊配置干擾。4.2 gridSetup.sh 的關(guān)鍵選擇磁盤組、ASM、管理網(wǎng)絡(luò)圖形安裝界面用 grid 用戶啟動執(zhí)行安裝介質(zhì)里的 ./gridSetup.sh。整個安裝過程里最需要想清楚的是幾個關(guān)鍵點集群類型選 Oracle Standalone Cluster網(wǎng)絡(luò)配置界面會顯示檢測到的網(wǎng)卡把 public 網(wǎng)卡對勾選上private 網(wǎng)卡標(biāo)為專用SCAN 名稱填 rac-scan 對應(yīng)的解析名。19c 相比 11g 多了一個管理網(wǎng)絡(luò)選項如果沒有單獨的管理網(wǎng)卡選擇使用 public 網(wǎng)絡(luò)即可別勾選獨立的 management 接口否則安裝后網(wǎng)卡資源會處于錯亂狀態(tài)。ASM 磁盤組是另一個關(guān)鍵。磁盤組名稱常用 DATA冗余級別選 EXTERNAL外部冗余表示沒有鏡像生產(chǎn)環(huán)境一般用 NORMAL 冗余但前提是存儲底層的 LUN 數(shù)量足夠。我見過不少人在測試環(huán)境選 NORMAL 冗余卻發(fā)現(xiàn)只有一塊候選盤安裝界面直接灰掉。測試環(huán)境老老實實選 EXTERNAL一塊盤也能建磁盤組。ASM 的 SYS 密碼要記好后面 DBCA 建庫和日常維護(hù)都要用。安裝向?qū)谐?OS 組的映射OSASM 組選 asmadminOSDBA 選 dbaOSOPER 選 asmoper。這步如果選錯裝完后 asmcmd 和 sqlplus 的權(quán)限會很擰巴重裝 Grid Infrastructure 才能解決。全部確認(rèn)后向?qū)нM(jìn)入最后的執(zhí)行階段在進(jìn)度條跑到 100% 附近會彈出一個提示框要求分別在兩個節(jié)點用 root 用戶執(zhí)行 root.sh。4.3 root.sh 的執(zhí)行順序與日志兩個節(jié)點各跑一次root.sh 是 RAC 安裝里最容易卡住的一步也是排錯經(jīng)驗最集中的一步。執(zhí)行順序有硬性要求先在第一個節(jié)點完整跑完確認(rèn)沒有報錯再在第二個節(jié)點執(zhí)行。兩個節(jié)點同時跑可能導(dǎo)致集群配置信息互相覆蓋。# 節(jié)點1 [rootnode1 ~]# /u01/app/19.0.0/grid/root.sh # 節(jié)點2等節(jié)點1 跑完再執(zhí)行 [rootnode2 ~]# /u01/app/19.0.0/grid/root.shroot.sh 輸出里看到 The command completed successfully 才算真正完成。它的日志寫在 $ORACLE_BASE/crsdata/ 下具體位置是 /u01/app/grid/crsdata/node1/crs/trace/如果執(zhí)行過程卡住先看這個目錄下 ohasd.log 和 cssd.log 的尾部。root.sh 卡住最常見的三個原因/etc/oracle 目錄權(quán)限不對、DNS 反向解析失敗、私網(wǎng)路由異常。前兩個可以通過 chown -R root:oinstall /etc/oracle 和修正 hosts 解決私網(wǎng)路由異常要檢查 /etc/sysconfig/network-scripts/ifcfg-eth1 是否配置了 GATEWAY私網(wǎng)網(wǎng)卡絕不能配默認(rèn)網(wǎng)關(guān)。4.4 安裝后驗證集群狀態(tài)crsctl 查看在線狀態(tài)root.sh 全部執(zhí)行完后用 grid 用戶驗證集群層面是否健康。crsctl stat res -t 是核心命令它會列出所有集群資源的當(dāng)前狀態(tài)和目標(biāo)狀態(tài)。重點關(guān)注以下幾項ora.cssd、ora.crsd、ora.evmd、ora.asm、ora.cluster_interconnect.haip 必須 ONLINE掃描監(jiān)聽 ora.scan1.listener 和節(jié)點監(jiān)聽 ora.node1.vip 也要 ONLINE。crsctl stat res -t asmcmd lsdg crsctl check cluster -allasmcmd lsdg 看到 DATA 磁盤組的 State 為 MOUNTED說明 ASM 實例已經(jīng)正常起來。crsctl check cluster -all 輸出兩個節(jié)點的狀態(tài)全綠才算集群層面健康。這一步做完Grid Infrastructure 的骨架算是立住了接下來可以進(jìn)入數(shù)據(jù)庫軟件安裝。5. RAC 安裝避坑我在 Linux 7.6 上踩過的五個坑5.1 現(xiàn)象root.sh 卡在 ohasd 啟動失敗裝某套測試環(huán)境時root.sh 執(zhí)行到 Adding daemon to inittab 就停住等十幾分鐘也沒有后續(xù)輸出單獨進(jìn)程里 ohasd 根本不存在。原因是這臺機(jī)器的 /etc/oracle 目錄屬主在之前卸載舊環(huán)境時變成了 root:rootroot.sh 寫入 scls_scr 文件時權(quán)限校驗失敗又不會直接報錯退出而是反復(fù)重試。解決方式先檢查 /etc/oracle/scls_scr 下文件的屬主改成 root:oinstall然后把 root.sh 進(jìn)程中斷清理半成品狀態(tài)后重新執(zhí)行。清理命令用 $GRID_HOME/crs/install/rootcrs.pl -deconfig -force這會把已生成的集群配置清掉再次執(zhí)行 root.sh 時是干凈環(huán)境。這個坑的教訓(xùn)是接手別人裝過半截的機(jī)器時先看 /etc/oracle 目錄的屬主再動手。5.2 現(xiàn)象重啟后 ASM 盤權(quán)限漂移成 root:disk兩節(jié)點裝完 RAC 后一切正常某次機(jī)房計劃性重啟起來后執(zhí)行 asmcmd lsdsk 發(fā)現(xiàn)所有磁盤的路徑還在但權(quán)限變成了 root:diskASM 實例無法讀取磁盤組。原因是 udev 規(guī)則雖然寫了但規(guī)則觸發(fā)的條件依賴 scsi_id 命令的返回值這臺機(jī)器的 multipath 服務(wù)搶先占用了設(shè)備節(jié)點udev 規(guī)則沒有匹配到。解決方式確認(rèn) /etc/multipath.conf 是否存在存在則把 ASM 磁盤加入 blacklist讓 multipath 不要接管這些 LUN然后重新執(zhí)行 udevadm control --reload 和 udevadm trigger再檢查 /dev/sd?1 的屬主是否恢復(fù)成 grid:asmadmin。這類問題在混合了多路徑和本地盤的存儲環(huán)境里很容易出現(xiàn)裝完最好做一次帶重啟的完整驗證別等生產(chǎn)切換時才暴露。5.3 現(xiàn)象SCAN IP 解析導(dǎo)致客戶端連接報錯集群本身 ONLINE應(yīng)用側(cè) JDBC 連接串用的是 SCAN 名稱但連庫時報出 ORA-12545提示連接目標(biāo)不可達(dá)。排查看監(jiān)聽狀態(tài)正常、VIP 正常問題是客戶端所在的機(jī)器 hosts 文件里只寫了 SCAN 名稱對應(yīng)一個 IP而集群實際監(jiān)聽的是另外兩個 SCAN IP。SCAN 在 hosts 解析下不會自動同步客戶端必須能解析到集群配置里全部 SCAN IP。解決方式把客戶端機(jī)器的 hosts 補齊三個 SCAN IP或者在 DNS 里配置 SCAN 的輪詢解析。另一個做法是修改應(yīng)用連接串直接用某個節(jié)點的 VIP 做測試但生產(chǎn)環(huán)境不值得為省 DNS 配置犧牲 SCAN 的負(fù)載均衡能力。這個坑在純內(nèi)網(wǎng)環(huán)境最典型網(wǎng)絡(luò)組和 DBA 各管一段SCAN 的解析鏈路上沒有人整體兜底。5.4 現(xiàn)象crsctl stat res -t 顯示 OFFline手動 start 又報錯某節(jié)點資源整體處于 OFFLINE用 crsctl start resource 單獨拉起時報出與節(jié)點通信異常的錯誤。最直接原因是兩節(jié)點時鐘偏差過大節(jié)點間的心跳校驗不通過集群拒絕把資源調(diào)度到該節(jié)點。檢查 chronyc sources 發(fā)現(xiàn)時間源失聯(lián)節(jié)點時間已經(jīng)慢了兩分鐘。解決方式用 chronyc makestep 強制同步本節(jié)點時間等兩個節(jié)點時間差小于 1 秒后在任意節(jié)點執(zhí)行 crsctl stop cluster -all 和 crsctl start cluster -all讓整個集群重新拉起。RAC 對時鐘的要求不是玄學(xué)是硬性約束建議在每臺機(jī)器上配好 chronyd 的 fallback 時間源并加監(jiān)控盯時間偏移量。5.5 現(xiàn)象DBCA 建庫報 ORA-15095磁盤組成員讀不到建庫到 80% 突然報 ORA-15095提示 ASM 磁盤無法訪問。檢查 asmcmd lsdsk 能看到磁盤名稱但 ls -l 發(fā)現(xiàn) /dev/sdb1 的屬組是 oinstall 而不是 asmadmin。原因是 udev 規(guī)則在最后一次系統(tǒng)更新后被覆蓋掉了磁盤權(quán)限回歸默認(rèn)值而 ASM 實例是在權(quán)限正常時啟動的運行中突然失去權(quán)限磁盤組直接進(jìn)入不可用狀態(tài)。解決方式修正 udev 規(guī)則并重新 trigger然后用 asmcmd 確認(rèn)磁盤可讀如果磁盤屬于某個磁盤組的成員且無法正常 mount優(yōu)先在 ASM 實例里執(zhí)行 alter diskgroup DATA mount必要時把 offline 的磁盤 online 回來。這個坑告訴我們udev 規(guī)則文件要納入配置管理系統(tǒng)更新后主動檢查規(guī)則是否還在而不是等 ASM 報錯才想起它。6. 裝完怎么驗從 crsctl 到 sqlplus 的十分鐘體檢集群裝完不是看到 ONLINE 就結(jié)束了我習(xí)慣按一張固定清單驗收十分鐘跑完每一項都過一遍才敢交給業(yè)務(wù)方。下面這個表格就是日常用的體檢項目。檢查對象命令預(yù)期結(jié)果集群整體crsctl check cluster -all所有節(jié)點 ONLINE集群資源crsctl stat res -t關(guān)鍵資源 ONLINEASM 磁盤組asmcmd lsdgDATA 已 MOUNTED數(shù)據(jù)庫實例srvctl status database -d orcl兩個實例均 OPENSCAN 監(jiān)聽srvctl status scanscan listener ONLINE業(yè)務(wù)連接sqlplus 經(jīng) SCAN 連接連接成功且可查詢crsctl check cluster -all crsctl stat res -t srvctl status database -d orcl srvctl status scan最后一環(huán)也是我最看重的驗證故障切換實測。找一個維護(hù)窗口在 node1 上執(zhí)行 shutdown -rf 模擬主機(jī)掉電觀察 node2 上的實例是否自動接管業(yè)務(wù)連接是否能在數(shù)據(jù)庫 session 層面恢復(fù)。切換完成后用 srvctl status database -d orcl 確認(rèn)集群把 node1 的資源重新拉起兩個實例恢復(fù)到 OPEN。這套驗證做完RAC 才算真正交付。這是我裝 RAC 幾年養(yǎng)成的習(xí)慣每完成一套環(huán)境就把體檢命令存成 shell 腳本命名 check_rac.sh放進(jìn) /home/grid 下后續(xù)巡檢直接跑。安裝手冊寫再多都不如這套體檢腳本可靠。希望幫到你。本文還有配套的精品資源點擊獲取