環境:RHEL 7 + Oracle 19.5 RACshell
最近遇到客戶的一套19c測試環境,在一次主機重啓後發現集羣沒法啓動,使用crsctl stat res -t -init
查看集羣啓動階段時發現直接報錯以下信息:oracle
[grid@xxdb01-vip ~]$ crsctl stat res -t -init Oracle Clusterware infrastructure error in CRSCTL (OS PID 29739): CLSD/ADR initialization failed with return value -1 1: clskec:has:CLSU:910 4 args[clsdAdr_CLSK_err][mod=clsdadr.c][loc=(:CLSD00050:)][msg=2020-07-03 16:33:42.032 (:CLSD00050:) dbgc_init_all failed with return code 49802. Detected in function clsdAdrInit at line number 1828. ] 2: clskec:has:CLSU:910 4 args[clsdAdrInit_CLSK_err][mod=clsdadr.c][loc=(:CLSD00281:)][msg=clsdAdrInit: Additional diagnostic data returned by the ADR component for dbgc_init_all failure: DIA-49802: missing read, write, or execute permission on specified ADR home directory [/oracle/app/grid/diag/crs/xxdb01-vip] DIA-49801: actual permissions [rwxr-xr-x], expected minimum permissions [rwxrwxrwx] for effective user [grid] DIA-48188: user missing read, write, or exec permission on specified directory Linux-x86_64 Error: 13: Permission denied Additional information: 2 Additional information: 511 Additional information: 16877 ([all diagnostic data retrieved from ADR])] CRS-4639: Could not contact Oracle High Availability Services CRS-4000: Command Status failed, or completed with errors.
起初看到這個報錯內容顯示較多且從未見過,還有些波瀾,但立刻靜心去細看報錯信息發現提示很是明顯,都是權限相關,而進一步看權限不足的那個目錄/oracle/app/grid/diag/crs/xxdb01-vip
,這裏爲什麼是vip的主機名呢?去到上層/oracle/app/grid/diag/crs
目錄下去查看發現有兩個目錄xxdb01
和xxdb01-vip
,而正常應該是xxdb01
,直到此時才注意到機器的主機名有問題:本來應該是xxdb01
,而如今重啓主機後卻變成了xxdb01-vip
,進而致使集羣異常。app
從故障現象來看,說明以前的主機名配置極可能存在問題,致使在重啓主機後主機名發生變化。
查了下主機名相關的配置文件,發現/etc/hosts
、/etc/sysconfig/network
內容都匹配,但/etc/hostname
不匹配。
在RHEL6中並無/etc/hostname
這個配置文件,所以懷疑極可能是當時實施安裝的工程師是按照RHEL6的方法修改了主機名,可是因爲/etc/hostname
沒有配置因此重啓出現問題。
那如今如何處理呢?改這個文件嗎?該文件應該也可,但其實RHEL7可使用以下命令來修改主機名,徹底省去了擔憂配錯文件的煩惱:測試
hostnamectl set-hostname xxdb01
當再次重啓主機後,RAC啓動恢復正常。code