Oracle 12CR2 RAC 安裝避坑寶典
前言
相信在 Redhat 7 上安裝過 Oracle 12CR2 RAC 的朋友,看了本文一定會(huì)后悔沒有早點(diǎn)看到這篇完美的避坑指南!
😜 如果有朋友不信邪,可以按照常規(guī)的方式安裝,大概率是會(huì)遇到下面我列出的這些坑。
一、聊聊哪些坑
本文主要介紹 Redhat 7.6 系統(tǒng)安裝 Oracle 12201 版本 RAC 的一些坑以及避坑方式。
絕對干貨滿滿,物超所值,當(dāng)然更歡迎大家來補(bǔ)充和糾錯(cuò)!
📢 注意: 坑點(diǎn)主要位于 Grid 軟件安裝步驟中 cvu check 和 root.sh 執(zhí)行。
坑 1:ASM device sharedness check
Grid 軟件安裝過程檢查報(bào)錯(cuò):Shared Storage Accessibility:/dev/asm_ocr ...FAILED (PRVG-11506)
可參照 MOS 文檔:
- 12.2: PRVG-0802 : Storage type for path "/dev/mapper/asm011p1" could not be determined (Doc ID 2251322.1)
這里先賣個(gè)關(guān)子,不說解決方案,MOS 建議是打一個(gè)補(bǔ)丁 25784424 來修復(fù):
- Apply patch ?25784424, if CVU storage check fails for ASMLib paths
坑 2:執(zhí)行 root.sh 報(bào)錯(cuò)
😤 先吐槽一下,這 TM 簡直巨坑無比!
當(dāng)執(zhí)行 root.sh 命令到進(jìn)度 14/19 時(shí),突然停止并且報(bào)錯(cuò) CLSRSC-400,并提示重啟主機(jī)系統(tǒng),重啟之后安裝進(jìn)程已經(jīng)終止,繼續(xù)執(zhí)行依然報(bào)錯(cuò),無奈卸載重裝,結(jié)果依然報(bào)錯(cuò),當(dāng)時(shí)搞了將近 3 個(gè)多小時(shí),網(wǎng)上找遍了都沒發(fā)現(xiàn)相關(guān)問題,真是一把心酸淚 😢!
在 MOS 上找了個(gè)相關(guān)文檔,但沒解決問題,可以參考一下:
- ALERT: root.sh Fails With "CLSRSC-400" While Installing GI 12.2.0.1 on RHEL or OL with RedHat Compatible Kernel (RHCK) 7.3 (Doc ID 2284463.1)
MOS 建議仍然是通過 applyOneOffs 打補(bǔ)丁來修復(fù):
- Interim patch 25078431 is required before installing 12.2 GI on Linux 7.3 (RedHat and OL7 with RHCK).
📢 注意: 這里雖然沒有幫助我解決問題,但是幫我打開了一個(gè)思路,讓我想到了 12C 開始支持的新的打補(bǔ)丁方式 applyPSU,對我后面解決問題帶來了很大的幫助!
坑 3:ASMCMD 報(bào)錯(cuò)
在修復(fù)了上述 2 個(gè)問題之后,😀 我又高高興興的開始執(zhí)行 root.sh,看著一路暢通無阻,本想著收拾收拾回家了。
結(jié)果 root.sh 執(zhí)行到進(jìn)度 19/19 時(shí),突然報(bào)錯(cuò)停止,報(bào)錯(cuò)內(nèi)容為:kgfnGetConnDetails requires 4 parameters at/u01/app/12.2.0/grid/lib/asmcmdbase.pm line 5704,顯示 root.sh 執(zhí)行失敗。
此時(shí),我不認(rèn)命的覺得它安裝成功,去試了下 asmcmd 命令,我直接裂開了 😵!
好吧,放下書包,看報(bào)錯(cuò)日志,然后 MOS 一通發(fā)現(xiàn)了下面這些文檔,以供參考:
- install.sh Hung And root.sh Is Failing At asmcmd lsdg --suppressheader While Installing A Zone With Clusterware (Doc ID 2414241.1)
- ASMCMD Failing With "KGFNGETCONNDETAILS Requires 4 Parameters at
/lib/asmcmdbase.pm (Doc ID 2748316.1)
這個(gè)問題還算簡單,但是還要卸載重裝一遍,最后經(jīng)過九九八一難,使出九牛二虎之力,終于把 Grid 軟件安裝成功了,后面 Oracle 軟件安裝和建庫都尤為順利。
二、說說如何避坑
聊完了有哪些坑,下面當(dāng)然要說說怎么避開了!
applyPSU
之前坑 2 有個(gè) MOS 說要使用 applyOneOffs 打補(bǔ)丁來修復(fù),于是就去搜了一下這個(gè)參數(shù)的用法,發(fā)現(xiàn)可以在 Grid 軟件安裝前打上補(bǔ)丁,順帶著還發(fā)現(xiàn)了 applyPSU,感覺找到了出路!
當(dāng)時(shí)我使用 MOS 的方式進(jìn)行單個(gè)補(bǔ)丁修復(fù),結(jié)果一個(gè)又一個(gè),感覺沒完了一樣,后來轉(zhuǎn)念一想,PSU 季度補(bǔ)丁是包含之前的 BUG 修復(fù)補(bǔ)丁的,直接使用 applyPSU 提前打上季度補(bǔ)丁來進(jìn)行修復(fù),就沒那么多問題,值得一試!
- How to Apply a Grid Infrastructure Patch Before Grid Infrastructure Configuration (before root.sh or rootupgrade.sh or gridsetup.bat) is Executed (Doc ID 1410202.1)
參考上述 MOS 文檔,有詳細(xì)的介紹和使用方法。
修復(fù)坑1、2
通過 12C 開始支持的 applyPSU 方式,提前給 Grid 軟件打上最新的季度 PSU 補(bǔ)丁,修復(fù)坑 1,2 的 BUG:
1、解壓 OPatch 補(bǔ)丁包
- ## grid 用戶下執(zhí)行解壓,覆蓋 OPatch 舊版本
- unzip -o /soft/p6880880_122010_Linux-x86-64.zip -d /u01/app/12.2.0/grid/
2、查看 OPatch 補(bǔ)丁包版本
- ## grid 用戶下執(zhí)行
- /u01/app/12.2.0/grid/OPatch/opatch version
- OPatch Version: 12.2.0.1.24
3、解壓最新 PSU 補(bǔ)丁
- ## grid 用戶下執(zhí)行
- unzip /soft/p32226491_122010_Linux-x86-64.zip -d /soft
📢 注意: 由于本文是在 2021年1月份寫的,所以補(bǔ)丁包版本非最新,請下載當(dāng)前最新的 PSU 補(bǔ)丁包!
4、執(zhí)行 Grid 軟件安裝
- ## grid 用戶下執(zhí)行
- ./gridSetup.sh -applyPSU /soft/32226491
- Preparing the home to patch...
- Applying the patch /soft/32226491/...
- Successfully applied the patch.
- The log can be found at: /u01/app/oraInventory/logs/GridSetupActions2021-04-01_04-18-54PM/installerPatchActions_2021-04-01_04-18-54PM.log
- Launching Oracle Grid Infrastructure Setup Wizard...
通過上述命令執(zhí)行結(jié)果,可以看到成功安裝了 PSU 補(bǔ)丁后才開始安裝 Grid 軟件!
📢 注意: 當(dāng)通過上述方式提前安裝了 PSU 補(bǔ)丁后,后面簡直可以說是一帆風(fēng)順,直到執(zhí)行 root.sh 到最后一步,遇到了坑 3。
修復(fù)坑 3
這個(gè)問題很簡單,只需要執(zhí)行一行命令即可,但是要注意執(zhí)行命令的時(shí)機(jī)。
- ## 在 root 用戶下執(zhí)行,需要提前配置 grid 軟件的 ORACLE_HOME 環(huán)境變量
- /usr/bin/make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk client_sharedlib libasmclntsh12.ohso libasmperl12.ohso ORACLE_HOME=$ORACLE_HOME
執(zhí)行順序:
當(dāng) Grid 軟件安裝 執(zhí)行到出現(xiàn) root.sh 提示框時(shí),執(zhí)行以上命令,📢 需在兩個(gè)節(jié)點(diǎn)以root 身份執(zhí)行該命令,ORACLE_HOME 路徑請根據(jù)實(shí)際情況填寫!確保所有節(jié)點(diǎn)執(zhí)行完之后,再執(zhí)行 root.sh,就可以完美修復(fù)坑 3。
接下來,就是順風(fēng)順?biāo)?,常?guī)安裝步驟了!不過,有 19C 了誰還用 12C 呢?😎
三、知識(shí)拓展
咱們上面講的幾個(gè)坑,說白了都是 BUG,解決方案都是通過補(bǔ)丁來修復(fù)。事后我就在想,官方為什么不在安裝之前先把補(bǔ)丁都打上呢?這樣不就可以避免這些 BUG 報(bào)錯(cuò)嘛!
于是,我在試著整了一版打好 PSU 的 12C GRID 安裝包,下面介紹一下如何操作!
1、實(shí)現(xiàn)依據(jù)
通過以下👇🏻 兩個(gè)參數(shù)可以將基礎(chǔ)安裝包和補(bǔ)丁包進(jìn)行集成打包。
- Oracle 12C開始支持Grid安裝前安裝PSU補(bǔ)?。?applyPSU
- Oracle 18C/19C支持Grid/Oracle安裝前安裝RU補(bǔ)丁:-applyRU
集成目的: 安裝時(shí)可以省去安裝補(bǔ)丁的步驟,直接解壓集成安裝包安裝即可!
2、實(shí)現(xiàn)方式
以下舉例 12CR2 Grid 集成補(bǔ)丁包 32540149 步驟:
(1)上傳安裝介質(zhì)
- ##Grid基礎(chǔ)安裝包
- LINUX.X64_122010_grid_home.zip
- ##OPatch補(bǔ)丁包
- p6880880_122010_Linux-x86-64.zip
- ##PSU補(bǔ)丁包
- p32540149_122010_Linux-x86-64.zip
- ##Oracle一鍵配置腳本
- OracleShellInstall.sh
(2)配置主機(jī)環(huán)境
使用我編寫的 Oracle 一鍵安裝腳本進(jìn)行環(huán)境配置:
- ./OracleShellInstall.sh -i 10.211.55.100 `#Public ip`\
- -n restart `# hostname`\
- -o nocdb `# oraclesid`\
- -gp oracle `# grid user password`\
- -op oracle `# oracle user password`\
- -b /oracle/app `# install basedir`\
- -s AL32UTF8 `# characterset`\
- -m Y
(3)安裝補(bǔ)丁
分別解壓 OPatch 補(bǔ)丁包和 PSU 補(bǔ)丁包:
- ##解壓更新OPatch包
- unzip -o p6880880_122010_Linux-x86-64.zip -d /oracle/app/12.2.0/grid
- chown -R grid:oinstall /oracle/app/12.2.0/grid/OPatch
- ##解壓PSU補(bǔ)丁包
- unzip p32540149_122010_Linux-x86-64.zip /soft
- chown -R grid:oinstall /soft/32540149
Grid 安裝好補(bǔ)丁,但是不執(zhí)行安裝過程:
- su - grid -c "/oracle/app/12.2.0/grid/gridSetup.sh -applyPSU /soft/32540149"
- ## 安裝成功后
- ## 1.修復(fù)bug:
- ## [INS-42505] The installer has detected that the Oracle Grid Infrastructure home software at (/oracle/GRID/12201) is not complete. (Doc ID 2697235.1)
- mv $ORACLE_HOME/install/files.lst $ORACLE_HOME/install/files.lst.bak
📢 注意: 上面遇到這個(gè)小 BUG,也可以無視,沒有什么大影響。
(4)壓縮 ORACLE_HOME 目錄
這里我將安裝好的 Grid ORACLE_HOME 壓縮打包成 zip 安裝包:
- cd /oracle/app/12.2.0/grid/
- zip -r LINUX.X64_122010_grid_home_32540149.zip *
- mv LINUX.X64_122010_grid_home_32540149.zip /soft
至此,基礎(chǔ)安裝包和補(bǔ)丁包集成成功。
3、安裝測試
這里我們打開一臺(tái)新的主機(jī)進(jìn)行安裝測試。
(1)上傳集成安裝包等介質(zhì)
- ##Grid集成安裝包
- LINUX.X64_122010_grid_home_32540149.zip
- ##Oracle一鍵配置腳本
- OracleShellInstall.sh
(2)主機(jī)環(huán)境初始化配置
- ##iscsi掛載共享盤
- iscsiadm -m discovery -t st -p 10.211.55.22
- iscsiadm -m node -T iqn.2008-08.com.starwindsoftware:10.211.55.22-lucifer -p 10.211.55.22 -l
- ##重命名安裝包
- mv LINUX.X64_122010_grid_home_32540149.zip LINUX.X64_122010_grid_home.zip
- ##執(zhí)行腳本初始化配置
- cd /soft
- ./OracleShellInstall.sh -i 10.211.55.100 `#Public ip`\
- -n restart `# hostname`\
- -o nocdb `# oraclesid`\
- -gp oracle `# grid user password`\
- -op oracle `# oracle user password`\
- -b /u01/app `# install basedir`\
- -s AL32UTF8 `# characterset`\
- -dd /dev/sdc `# asm data disk`\
- -dn DATA `# asm data diskgroupname`\
- -dr EXTERNAL `# asm data redundancy`\
- -m Y
(3)安裝 Grid 軟件
- su - grid
- cd /oracle/app/12.2.0/grid/
- ./gridSetup.sh
執(zhí)行 root.sh 前執(zhí)行:
- ## 2.修復(fù)bug:ASMCMD Failing With "KGFNGETCONNDETAILS Requires 4 Parameters at <GI_HOME>/lib/asmcmdbase.pm (Doc ID 2748316.1)
- export ORACLE_HOME=/u01/app/12.2.0/grid
- /usr/bin/make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk client_sharedlib libasmclntsh12.ohso libasmperl12.ohso ORACLE_HOME=$ORACLE_HOME
順利安裝完畢!雖然實(shí)際用處不大,也算是一個(gè)思路吧,可以節(jié)省一些時(shí)間。