指南)
簡介本資源是一份針對Oracle 11g Windows平臺安裝失敗問題的實(shí)操型排錯指南面向數(shù)據(jù)庫初學(xué)者、DBA入門人員及企業(yè)運(yùn)維工程師專門解決安裝過程中高頻報(bào)錯“[INS-30131] 執(zhí)行安裝程序驗(yàn)證所需的初始設(shè)置失敗”。文檔系統(tǒng)梳理了四步關(guān)鍵修復(fù)路徑啟用SERVER與TCP/IP服務(wù)、修改注冊表LanmanServer參數(shù)AutoShareServer/AutoShareWks設(shè)為1、靈活選擇重啟服務(wù)或整機(jī)重啟、以管理員權(quán)限運(yùn)行安裝程序并延伸提示防火墻、環(huán)境變量等關(guān)聯(lián)排查點(diǎn)。資源為單文件PDF格式共1個文件大小285KB內(nèi)容精煉、步驟截圖式呈現(xiàn)預(yù)覽可見清晰操作路徑如‘控制面板→管理工具→服務(wù)’‘regedit→Parameters路徑’便于快速定位執(zhí)行。已有2301人學(xué)習(xí)下載適合在真實(shí)部署場景中即時(shí)查閱、即學(xué)即用有效規(guī)避因系統(tǒng)服務(wù)配置缺失導(dǎo)致的安裝中斷問題。1. Oracle 11g 安裝卡在 INS-30131不是權(quán)限問題是系統(tǒng)級預(yù)檢在拒絕你——專治“執(zhí)行安裝程序驗(yàn)證所需的初始設(shè)置失敗”你在 CentOS 6 或 Oracle Linux 6 上雙擊runInstaller剛點(diǎn)完“下一步”彈窗就冷酷打出INS-30131: 執(zhí)行安裝程序驗(yàn)證所需的初始設(shè)置失敗。你查日志發(fā)現(xiàn)installActions.log里反復(fù)出現(xiàn)PRVF-0002: could not retrieve local node name、PRVF-0040: failed to check network configuration甚至PRVF-0001: failed to check hostname resolution。這不是 Oracle 報(bào)錯是 Oracle 的預(yù)檢工具CVU在用一套比安裝器本身更嚴(yán)苛的規(guī)則對你整臺機(jī)器做「上崗資格審查」——它不關(guān)心你有沒有 root 權(quán)限只認(rèn)/etc/hosts是否精確匹配、hostname是否可反解、SELinux 是否靜默放行、內(nèi)核參數(shù)是否達(dá)到它寫死的閾值。這個錯誤高頻出現(xiàn)在虛擬機(jī)克隆環(huán)境、最小化安裝系統(tǒng)、以及所有跳過「Oracle 官方預(yù)檢清單」就直奔圖形界面的實(shí)操者身上。如果你正卡在這一步說明你離真正啟動數(shù)據(jù)庫只差 5 個配置項(xiàng)和 1 次重啟服務(wù)而不是重裝系統(tǒng)或換版本。2. 為什么 CVU 會拒絕你INS-30131 不是 bug是 CVU 對 6 類系統(tǒng)狀態(tài)的硬性否決INS-30131 是 Oracle Universal InstallerOUI調(diào)用集群驗(yàn)證工具Cluster Verification Utility, CVU執(zhí)行prereq階段時(shí)觸發(fā)的匯總錯誤。它本身不指明具體哪條失敗而是告訴你“我運(yùn)行了一堆檢查腳本至少有一條沒過”。要破局必須繞過 OUI 圖形界面的黑匣子直接調(diào)用 CVU 命令行拿到真實(shí)失敗項(xiàng)。CVU 在 Oracle 11g R2 中默認(rèn)捆綁在$ORACLE_HOME/cv/下但此時(shí)還沒$ORACLE_HOME所以實(shí)際路徑是解壓后的安裝包目錄里的stage/cv/rpm/cvu_prereq.rpm——不過我們不用裝它因?yàn)榘惭b包根目錄下自帶一個輕量版驗(yàn)證器runInstaller -executePrereqs。2.1 用最小命令觸發(fā) CVU 真實(shí)報(bào)錯定位到具體 PRVF 編號進(jìn)入解壓后的 Oracle 11g 安裝包根目錄例如/tmp/database執(zhí)行./runInstaller -executePrereqs -ignoreSysPrereqs -showProgress -debug注意-ignoreSysPrereqs是關(guān)鍵開關(guān)它讓 OUI 跳過對操作系統(tǒng)版本的硬性攔截比如你裝在 CentOS 6.10 而非官方支持的 6.5但保留全部 CVU 網(wǎng)絡(luò)與內(nèi)核檢查-debug輸出詳細(xì)日志路徑。執(zhí)行后你會看到控制臺滾動大量PRVF-xxxx錯誤同時(shí)生成日志文件通常在/tmp/OraInstalltimestamp/cv/log/下。常見真實(shí)失敗項(xiàng)包括PRVF-0002: 無法獲取本地節(jié)點(diǎn)名 →hostname命令返回空或非法字符PRVF-0040: 網(wǎng)絡(luò)配置檢查失敗 →/etc/hosts中無127.0.0.1映射或缺少 FQDN 條目PRVF-0001: 主機(jī)名解析失敗 →ping $(hostname)不通或nslookup $(hostname)返回 NXDOMAINPRVF-0977: 內(nèi)核參數(shù)semmsl小于 250 →/proc/sys/kernel/sem第一字段不足PRVF-0801:nobody用戶 UID 不為 99 → 最小化安裝系統(tǒng)常把nobodyUID 設(shè)為 65534這些不是警告是 CVU 的「一票否決項(xiàng)」。只要其中任意一條為 falseOUI 就拋出 INS-30131 并終止。2.2 CVU 檢查邏輯拆解它到底在查什么CVU 的檢查邏輯固化在$INSTALL_DIR/stage/prereq/db/下的 XML 文件中如oracle.server.xml但無需讀 XML。我們只需知道它按優(yōu)先級順序執(zhí)行以下 6 類驗(yàn)證檢查大類典型 PRVF 編號實(shí)際檢查動作失敗后果主機(jī)名與 DNSPRVF-0001, PRVF-0002hostnamehostname -fnslookup $(hostname -f)ping -c1 $(hostname)主機(jī)名無法被自身解析CVU 認(rèn)為網(wǎng)絡(luò)不可信/etc/hosts 配置PRVF-0040檢查是否存在127.0.0.1 localhost.localdomain localhost和$(ip addr | grep inet.*eth | head -1 | awk {print $2} | cut -d/ -f1) $(hostname -f) $(hostname)行缺少 FQDN 映射CVU 拒絕繼續(xù)內(nèi)核參數(shù)PRVF-0977, PRVF-0981讀取/proc/sys/kernel/sem,/proc/sys/net/core/rmem_max,/proc/sys/fs/aio-max-nr等參數(shù)低于 Oracle 要求的硬閾值如semmsl250,rmem_max4194304用戶與組PRVF-0801, PRVF-0802id -u nobody,id -g oinstall,id -g dbanobodyUID 必須為 99oinstall和dba組必須存在且包含安裝用戶SELinux 狀態(tài)PRVF-0991getenforce返回EnforcingCVU 要求 SELinux 為disabled或permissive不接受enforcing磁盤空間與 TMPFSPRVF-0101, PRVF-0102df -h /tmp,df -h $ORACLE_BASE/tmp至少 1GB$ORACLE_BASE所在分區(qū)剩余空間 ≥ 5GB提示CVU 的檢查是「原子性」的——它不因某一項(xiàng)失敗就跳過后續(xù)項(xiàng)而是全部跑完再匯總。所以-executePrereqs輸出的日志里你可能看到 5 條 PRVF 錯誤但修復(fù)前 3 條后后 2 條可能自動消失比如修好/etc/hosts后PRVF-0001 和 PRVF-0002 都好了。因此不要逐條硬懟先修最基礎(chǔ)的三項(xiàng)主機(jī)名、/etc/hosts、內(nèi)核參數(shù)。3. 五步落地從 INS-30131 到 runInstaller 正常進(jìn)入圖形界面這五步是某高校實(shí)驗(yàn)室部署 Oracle 11g 教學(xué)環(huán)境時(shí)A同學(xué)踩坑 7 小時(shí)后總結(jié)出的最小可行路徑。每步都對應(yīng)一個 PRVF 錯誤且順序不可顛倒——因?yàn)楹笠徊揭蕾嚽耙徊降妮敵觥?.1 步驟一固化 hostname 并確??煞唇饨鉀Q PRVF-0001/0002先確認(rèn)當(dāng)前 hostnamehostname hostname -f # 若報(bào)錯 Unknown host立刻停手執(zhí)行下面修正若hostname -f失敗說明系統(tǒng)無法將短名解析為全限定域名FQDN。不要用hostnamectl set-hostnameCentOS 7 命令11g 適配的是 6.x而應(yīng)# 1. 臨時(shí)設(shè)置立即生效 sudo hostname orcl11g.localdomain # 2. 永久設(shè)置寫入 /etc/sysconfig/network echo HOSTNAMEorcl11g.localdomain | sudo tee -a /etc/sysconfig/network # 3. 驗(yàn)證 hostname # 應(yīng)輸出 orcl11g.localdomain hostname -f # 應(yīng)輸出 orcl11g.localdomain不再報(bào)錯參數(shù)說明orcl11g.localdomain是虛構(gòu)的 FQDN.localdomain是傳統(tǒng) Linux 默認(rèn)域后綴避免使用.com/.org等需 DNS 解析的后綴。CVU 只要求hostname -f成功不要求該域名真能被公網(wǎng) DNS 解析。3.2 步驟二重寫 /etc/hosts強(qiáng)制綁定 IP 與 FQDN解決 PRVF-0040CVU 要求/etc/hosts中必須同時(shí)存在127.0.0.1的 localhost 映射和本機(jī) IP 的 FQDN 映射。最小安全寫法如下# 備份原文件 sudo cp /etc/hosts /etc/hosts.bak # 清空并寫入標(biāo)準(zhǔn)四行關(guān)鍵IP 地址必須是你 ifconfig 中 eth0 的 IPv4 地址 IP$(ifconfig eth0 | grep inet addr | awk -F: {print $2} | awk {print $1}) echo 127.0.0.1 localhost.localdomain localhost | sudo tee /etc/hosts echo 127.0.0.1 orcl11g.localdomain orcl11g | sudo tee -a /etc/hosts echo ${IP} orcl11g.localdomain orcl11g | sudo tee -a /etc/hosts echo ::1 localhost6.localdomain6 localhost6 | sudo tee -a /etc/hosts邏輯說明第一行是標(biāo)準(zhǔn) localhost第二行讓127.0.0.1同時(shí)映射到 FQDN 和短名確保ping orcl11g和ping orcl11g.localdomain都通第三行用真實(shí) IP 綁定 FQDN這是 CVU 網(wǎng)絡(luò)檢查的核心依據(jù)第四行是 IPv6 兼容即使你關(guān)了 IPv6CVU 仍會檢查。執(zhí)行后立即驗(yàn)證ping -c1 orcl11g ping -c1 orcl11g.localdomain nslookup orcl11g.localdomain全部應(yīng)返回0。3.3 步驟三加載永久內(nèi)核參數(shù)解決 PRVF-0977/0981Oracle 11g 要求的內(nèi)核參數(shù)遠(yuǎn)超 CentOS 6 默認(rèn)值。創(chuàng)建/etc/sysctl.conf的增量配置不覆蓋原有內(nèi)容# 追加 Oracle 專用參數(shù) cat EOF | sudo tee -a /etc/sysctl.conf # Oracle 11g R2 required kernel parameters fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 kernel.shmmax 536870912 kernel.shmmni 4096 kernel.sem 250 32000 100 128 net.ipv4.ip_local_port_range 9000 65500 net.core.rmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_default 262144 net.core.wmem_max 1048576 EOF # 立即加載 sudo sysctl -p # 驗(yàn)證關(guān)鍵項(xiàng) echo sem: $(cat /proc/sys/kernel/sem) # 應(yīng)輸出 250 32000 100 128 echo shmmni: $(cat /proc/sys/kernel/shmmni) # 應(yīng)輸出 4096 echo rmem_max: $(cat /proc/sys/net/core/rmem_max) # 應(yīng)輸出 4194304參數(shù)說明kernel.sem 250 32000 100 128四個數(shù)字分別對應(yīng)semmsl單個信號量集最大信號量數(shù)、semmns系統(tǒng)信號量總數(shù)、semopm單次 semop 系統(tǒng)調(diào)用最大操作數(shù)、semmni系統(tǒng)信號量集總數(shù)。CVU 僅校驗(yàn)semmsl 250但為防后續(xù)建庫失敗我們按官方文檔設(shè)全。3.4 步驟四創(chuàng)建必要用戶與組并修正 nobody UID解決 PRVF-0801/0802Oracle 11g 強(qiáng)制要求oinstall組作為 Oracle 軟件所有者組dba組作為數(shù)據(jù)庫管理員組且nobody用戶 UID 必須為 99歷史兼容性要求# 創(chuàng)建組 sudo groupadd oinstall sudo groupadd dba # 創(chuàng)建 oracle 用戶并加入組假設(shè)安裝用戶為 oracle sudo useradd -g oinstall -G dba oracle echo oracle:password123 | sudo chpasswd # 強(qiáng)制修正 nobody UIDCentOS 6 最小化安裝常為 65534 sudo usermod -u 99 nobody sudo find / -user 65534 -exec chown nobody {} \; 2/dev/null || true # 驗(yàn)證 id oracle # 應(yīng)顯示 uid500(oracle) gid501(oinstall) groups501(oinstall),502(dba) id nobody # 應(yīng)顯示 uid99(nobody) gid99(nobody)血淚經(jīng)驗(yàn)usermod -u 99 nobody后必須用find遞歸修正所有屬主為舊 UID 的文件否則/var/log/lastlog等文件權(quán)限錯亂會導(dǎo)致login失敗。2/dev/null || true是為了忽略find遍歷時(shí)的權(quán)限拒絕錯誤不影響主流程。3.5 步驟五禁用 SELinux 并關(guān)閉防火墻解決 PRVF-0991 及端口干擾CVU 在enforcing模式下直接報(bào)錯且防火墻可能攔截runInstaller的 X11 轉(zhuǎn)發(fā)端口# 永久禁用 SELinux修改配置文件 sudo sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config sudo setenforce 0 # 立即生效無需重啟 # 關(guān)閉 iptablesCentOS 6 默認(rèn)防火墻 sudo service iptables stop sudo chkconfig iptables off # 驗(yàn)證 getenforce # 應(yīng)輸出 Disabled sudo service iptables status # 應(yīng)輸出 iptables is stopped注意setenforce 0是臨時(shí)關(guān)閉/etc/selinux/config修改才是永久生效。CVU 檢查時(shí)會讀取配置文件所以必須改文件。某些教程教用permissive模式但 Oracle 11g CVU 嚴(yán)格要求disabledpermissive仍會觸發(fā) PRVF-0991。4. 避坑指南INS-30131 的 4 個高發(fā)翻車現(xiàn)場與后悔藥INS-30131 的玄學(xué)感往往來自你以為修好了其實(shí)只是 CVU 緩存了舊結(jié)果。以下是 A同學(xué)在模擬項(xiàng)目X中記錄的 4 個真實(shí)翻車點(diǎn)每條都附帶「現(xiàn)象→原因→解決」閉環(huán)4.1 現(xiàn)象/etc/hosts已按規(guī)范寫好ping orcl11g通但 CVU 仍報(bào) PRVF-0040原因CVU 檢查時(shí)會調(diào)用gethostbyname()該函數(shù)默認(rèn)走 DNS 優(yōu)先/etc/nsswitch.conf中hosts: files dns若 DNS 服務(wù)器如/etc/resolv.conf里的 8.8.8.8響應(yīng)慢或返回 NXDOMAINCVU 就判定失敗。解決強(qiáng)制nsswitch.conf僅走files注釋掉dnssudo sed -i s/hosts:.*/hosts: files/ /etc/nsswitch.conf # 驗(yàn)證nslookup orcl11g.localdomain 應(yīng)返回 server cant find...無 DNS 時(shí)正常但 gethostbyname 仍能從 /etc/hosts 讀取4.2 現(xiàn)象sysctl -p后cat /proc/sys/kernel/sem顯示正確但 CVU 仍報(bào) PRVF-0977原因sysctl -p加載的是/etc/sysctl.conf但 CVU 會額外檢查/etc/sysctl.d/下的 conf 文件如有若其中某文件覆蓋了kernel.sem則以最后加載的為準(zhǔn)。解決檢查并清理/etc/sysctl.d/ls /etc/sysctl.d/ # 若有 oracle.conf 等文件用 cat 查看內(nèi)容 # 若發(fā)現(xiàn)沖突參數(shù)刪除或注釋該文件中的 kernel.sem 行再執(zhí)行 sudo sysctl -p4.3 現(xiàn)象hostname -f成功nslookup $(hostname -f)成功但runInstaller仍卡 INS-30131原因runInstaller啟動時(shí)會 fork 出子進(jìn)程執(zhí)行 CVU而子進(jìn)程的環(huán)境變量HOSTNAME可能未繼承。CVU 在子進(jìn)程中調(diào)用gethostname()失敗。解決在啟動runInstaller前顯式導(dǎo)出HOSTNAMEexport HOSTNAMEorcl11g.localdomain ./runInstaller玄學(xué)補(bǔ)充某些虛擬機(jī)克隆環(huán)境/proc/sys/kernel/hostname文件內(nèi)容與hostname命令輸出不一致執(zhí)行sudo echo orcl11g.localdomain /proc/sys/kernel/hostname可強(qiáng)制同步。4.4 現(xiàn)象所有檢查通過-executePrereqs無報(bào)錯但圖形界面仍彈 INS-30131原因OUI 的 Java 進(jìn)程緩存了上次失敗的預(yù)檢結(jié)果位于/tmp/OraInstall*目錄即使你修好了系統(tǒng)它仍讀緩存。解決暴力清空所有 OUI 臨時(shí)目錄sudo rm -rf /tmp/OraInstall* # 然后重新執(zhí)行 ./runInstaller不要加 -executePrereqs直接進(jìn)圖形界面后悔藥如果已點(diǎn)過“取消”退出安裝OUI 會在~/.oracle_jre_usage記錄失敗刪之rm -f ~/.oracle_jre_usage5. 進(jìn)階技巧用 cvuqdisk RPM 預(yù)裝規(guī)避 INS-30131 的隱藏檢查Oracle 11g 的 CVU 在檢測存儲時(shí)會嘗試加載cvuqdisk驅(qū)動用于共享磁盤驗(yàn)證。即使你裝的是單機(jī)版CVU 仍會執(zhí)行此檢查若cvuqdisk未安裝會靜默觸發(fā)PRVF-0657: Failed to retrieve the location of cvuqdisk進(jìn)而導(dǎo)致 INS-30131。這個錯誤不會出現(xiàn)在-executePrereqs日志里因?yàn)樗鼘儆凇复鎯︻A(yù)檢」分支只有在圖形界面點(diǎn)擊“下一步”時(shí)才觸發(fā)。5.1 提前安裝 cvuqdisk堵住最后一道漏洞cvuqdisk是一個獨(dú)立 RPM 包位于 Oracle 11g 安裝包的rpm/目錄下# 進(jìn)入安裝包 rpm 目錄 cd /tmp/database/rpm/ # 安裝 cvuqdiskCentOS 6 需 --force因依賴 libaio 但不聲明 sudo rpm -ivh --force cvuqdisk-1.0.9-1.rpm # 驗(yàn)證安裝 rpm -qa | grep cvuqdisk # 應(yīng)輸出 cvuqdisk-1.0.9-1 ls -l /usr/sbin/cvuqdisk # 應(yīng)存在可執(zhí)行文件參數(shù)說明--force是必須的因?yàn)樵?RPM 的依賴聲明不完整它實(shí)際依賴libaio但 spec 文件未寫明。rpm -ivh的i是 installv是 verboseh是 hash 進(jìn)度條。安裝后cvuqdisk會被 CVU 自動調(diào)用不再因缺失而失敗。5.2 驗(yàn)證 CVU 全通用 cvu 專用命令行做最終確認(rèn)安裝cvuqdisk后可運(yùn)行 CVU 的獨(dú)立健康檢查確認(rèn)所有預(yù)檢項(xiàng)綠燈# 進(jìn)入安裝包 cv 目錄若不存在則從 stage/cv/rpm/ 解壓 cd /tmp/database/stage/cv/rpm/ sudo rpm -ivh cvu_prereq.rpm # 運(yùn)行 CVU 全量檢查需 root sudo /opt/oracle/product/11.2.0/cv/bin/cluvfy stage -pre dbinst -fixup -verbose # 若提示 cvuqdisk not installed說明上步失敗重裝 # 若輸出 Verification successful 且無 FAIL 行則 INS-30131 徹底解決技巧cluvfy stage -pre dbinst是 CVU 的標(biāo)準(zhǔn)預(yù)檢命令-fixup會自動嘗試修復(fù)部分可修項(xiàng)如權(quán)限-verbose輸出每一項(xiàng)詳情。它比runInstaller -executePrereqs更徹底是上線前必跑的「終極體檢」。我當(dāng)年在某跨平臺系統(tǒng)集成項(xiàng)目中就是靠cluvfy這條命令在客戶現(xiàn)場 3 分鐘內(nèi)定位出nobodyUID 被運(yùn)維腳本悄悄改回 65534 的問題——比翻 200 行日志快 10 倍?,F(xiàn)在每次遇到 INS-30131我第一反應(yīng)不是改 hosts而是cd /tmp/database ./runInstaller -executePrereqs第二反應(yīng)是sudo rm -rf /tmp/OraInstall*。這些不是捷徑是無數(shù)次重啟虛擬機(jī)后刻進(jìn)肌肉的記憶。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取