Oracle 12CR2 RAC 安裝避坑寶典
前言
相信在 Redhat 7 上安裝過(guò) Oracle 12CR2 RAC 的朋友,看了本文一定會(huì)后悔沒(méi)有早點(diǎn)看到這篇完美的避坑指南!
😜 如果有朋友不信邪,可以按照常規(guī)的方式安裝,大概率是會(huì)遇到下面我列出的這些坑。
一、聊聊哪些坑
本文主要介紹 Redhat 7.6 系統(tǒng)安裝 Oracle 12201 版本 RAC 的一些坑以及避坑方式。
絕對(duì)干貨滿滿,物超所值,當(dāng)然更歡迎大家來(lái)補(bǔ)充和糾錯(cuò)!
📢 注意: 坑點(diǎn)主要位于 Grid 軟件安裝步驟中 cvu check 和 root.sh 執(zhí)行。
坑 1:ASM device sharedness check
Grid 軟件安裝過(guò)程檢查報(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)子,不說(shuō)解決方案,MOS 建議是打一個(gè)補(bǔ)丁 25784424 來(lái)修復(fù):
- Apply patch ?25784424, if CVU storage check fails for ASMLib paths
坑 2:執(zhí)行 root.sh 報(bào)錯(cuò)
😤 先吐槽一下,這 TM 簡(jiǎn)直巨坑無(wú)比!
當(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ò),無(wú)奈卸載重裝,結(jié)果依然報(bào)錯(cuò),當(dāng)時(shí)搞了將近 3 個(gè)多小時(shí),網(wǎng)上找遍了都沒(méi)發(fā)現(xiàn)相關(guān)問(wèn)題,真是一把心酸淚 😢!
在 MOS 上找了個(gè)相關(guān)文檔,但沒(méi)解決問(wè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 建議仍然是通過(guò) applyOneOffs 打補(bǔ)丁來(lái)修復(fù):
- Interim patch 25078431 is required before installing 12.2 GI on Linux 7.3 (RedHat and OL7 with RHCK).
📢 注意: 這里雖然沒(méi)有幫助我解決問(wèn)題,但是幫我打開(kāi)了一個(gè)思路,讓我想到了 12C 開(kāi)始支持的新的打補(bǔ)丁方式 applyPSU,對(duì)我后面解決問(wèn)題帶來(lái)了很大的幫助!
坑 3:ASMCMD 報(bào)錯(cuò)
在修復(fù)了上述 2 個(gè)問(wèn)題之后,😀 我又高高興興的開(kāi)始執(zhí)行 root.sh,看著一路暢通無(wú)阻,本想著收拾收拾回家了。
結(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)命的覺(jué)得它安裝成功,去試了下 asmcmd 命令,我直接裂開(kāi)了 😵!
好吧,放下書(shū)包,看報(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è)問(wèn)題還算簡(jiǎn)單,但是還要卸載重裝一遍,最后經(jīng)過(guò)九九八一難,使出九牛二虎之力,終于把 Grid 軟件安裝成功了,后面 Oracle 軟件安裝和建庫(kù)都尤為順利。
二、說(shuō)說(shuō)如何避坑
聊完了有哪些坑,下面當(dāng)然要說(shuō)說(shuō)怎么避開(kāi)了!
applyPSU
之前坑 2 有個(gè) MOS 說(shuō)要使用 applyOneOffs 打補(bǔ)丁來(lái)修復(fù),于是就去搜了一下這個(gè)參數(shù)的用法,發(fā)現(xiàn)可以在 Grid 軟件安裝前打上補(bǔ)丁,順帶著還發(fā)現(xiàn)了 applyPSU,感覺(jué)找到了出路!
當(dāng)時(shí)我使用 MOS 的方式進(jìn)行單個(gè)補(bǔ)丁修復(fù),結(jié)果一個(gè)又一個(gè),感覺(jué)沒(méi)完了一樣,后來(lái)轉(zhuǎn)念一想,PSU 季度補(bǔ)丁是包含之前的 BUG 修復(fù)補(bǔ)丁的,直接使用 applyPSU 提前打上季度補(bǔ)丁來(lái)進(jìn)行修復(fù),就沒(méi)那么多問(wèn)題,值得一試!
- 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
通過(guò) 12C 開(kāi)始支持的 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ǔ)丁包版本非最新,請(qǐng)下載當(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...
通過(guò)上述命令執(zhí)行結(jié)果,可以看到成功安裝了 PSU 補(bǔ)丁后才開(kāi)始安裝 Grid 軟件!
📢 注意: 當(dāng)通過(guò)上述方式提前安裝了 PSU 補(bǔ)丁后,后面簡(jiǎn)直可以說(shuō)是一帆風(fēng)順,直到執(zhí)行 root.sh 到最后一步,遇到了坑 3。
修復(fù)坑 3
這個(gè)問(wèn)題很簡(jiǎn)單,只需要執(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 路徑請(qǐng)根據(jù)實(shí)際情況填寫!確保所有節(jié)點(diǎn)執(zhí)行完之后,再執(zhí)行 root.sh,就可以完美修復(fù)坑 3。
接下來(lái),就是順風(fēng)順?biāo)R?guī)安裝步驟了!不過(guò),有 19C 了誰(shuí)還用 12C 呢?😎
三、知識(shí)拓展
咱們上面講的幾個(gè)坑,說(shuō)白了都是 BUG,解決方案都是通過(guò)補(bǔ)丁來(lái)修復(fù)。事后我就在想,官方為什么不在安裝之前先把補(bǔ)丁都打上呢?這樣不就可以避免這些 BUG 報(bào)錯(cuò)嘛!
于是,我在試著整了一版打好 PSU 的 12C GRID 安裝包,下面介紹一下如何操作!
1、實(shí)現(xiàn)依據(jù)
通過(guò)以下👇🏻 兩個(gè)參數(shù)可以將基礎(chǔ)安裝包和補(bǔ)丁包進(jìn)行集成打包。
- Oracle 12C開(kāi)始支持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í)行安裝過(guò)程:
- 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,也可以無(wú)視,沒(méi)有什么大影響。
(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、安裝測(cè)試
這里我們打開(kāi)一臺(tái)新的主機(jī)進(jìn)行安裝測(cè)試。
(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í)間。