【問題處理】因誤修改inittab檔案導致Oracle 10gR2 CRS無法啟動

secooler發表於2011-01-05
1.問題現象
1)RAC環境的第一個節點手工啟動CRS後沒有反應,CRS無法啟動。
[root@rac1 ~]# crsctl start crs
Attempting to start CRS stack
The CRS stack will be started shortly

長時間等待……

[root@rac1 ~]# crs_stat -t
CRS-0184: Cannot communicate with the CRS daemon.

CRS沒啟動成功。

檢視後臺與CRS相關的程式
[root@rac1 ~]# ps -ef | grep d.bin | grep -v grep
[root@rac1 ~]# ps -ef | grep init | grep -v grep
root         1     0  0 14:22 ?        00:00:01 init [5]

此處顯示,沒有與CRS相關的程式資訊。

長時間等待沒能等來CRS的成功啟動。crsd日誌和ocssd日誌沒有任何資訊輸出。
[root@rac1 ~]# tail -30f /u01/crs1020/log/rac1/crsd/crsd.log
註釋:此處無新資訊輸出。

[root@rac1 ~]# tail -30f /u01/crs1020/log/rac1/cssd/ocssd.log
註釋:此處無新資訊輸出。

2)RAC第二節點手工啟動正常
[root@rac2 ~]# crsctl start crs
Attempting to start CRS stack
The CRS stack will be started shortly

[root@rac2 ~]# crs_stat -t -v
Name           Type           R/RA   F/FT   Target    State     Host
----------------------------------------------------------------------
ora....B1.inst application    0/5    0/0    ONLINE    OFFLINE
ora....B2.inst application    0/5    0/0    ONLINE    OFFLINE
ora.RACDB.db   application    0/1    0/1    ONLINE    ONLINE    rac2
ora....DB1.srv application    0/1    0/0    ONLINE    OFFLINE
ora....DB2.srv application    0/1    0/0    ONLINE    ONLINE    rac2
ora.....taf.cs application    0/1    0/1    ONLINE    ONLINE    rac2
ora....SM1.asm application    0/5    0/0    ONLINE    OFFLINE
ora....C1.lsnr application    0/5    0/0    ONLINE    OFFLINE
ora.rac1.gsd   application    0/5    0/0    ONLINE    OFFLINE
ora.rac1.ons   application    0/3    0/0    ONLINE    OFFLINE
ora.rac1.vip   application    0/0    0/0    ONLINE    ONLINE    rac2
ora....SM2.asm application    0/5    0/0    ONLINE    ONLINE    rac2
ora....C2.lsnr application    0/5    0/0    ONLINE    ONLINE    rac2
ora.rac2.gsd   application    0/5    0/0    ONLINE    ONLINE    rac2
ora.rac2.ons   application    0/3    0/0    ONLINE    ONLINE    rac2
ora.rac2.vip   application    0/0    0/0    ONLINE    ONLINE    rac2

[root@rac2 ~]# ps -ef | grep init | grep -v grep
root         1     0  0 14:16 ?        00:00:01 init [5]
root      3081     1  0 14:18 ?        00:00:05 /bin/sh /etc/init.d/init.cssd fatal
root      4767  3081  0 14:21 ?        00:00:00 /bin/sh /etc/init.d/init.cssd daemon

[root@rac2 ~]# ps -ef | grep d.bin | grep -v grep
root      3082     1  1 14:18 ?        00:00:23 /u01/crs1020/bin/crsd.bin reboot
oracle    4764  3080  0 14:21 ?        00:00:01 /u01/crs1020/bin/evmd.bin
oracle    4989  4942  0 14:21 ?        00:00:04 /u01/crs1020/bin/ocssd.bin

2.問題原因
如果細心觀察上面的輸出資訊,便會找到問題的根源。問題節點上有關“init.*”的程式沒有啟動。
[root@rac1 ~]# ps -ef | grep init | grep -v grep
root         1     0  0 14:22 ?        00:00:01 init [5]

啟動這些程式使用作業系統/etc/inittab檔案來實現的。

3.問題處理
1)修復/etc/inittab檔案
[root@rac1 ~]# vi /etc/inittab
……省略部分資訊……
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon
#h1:35:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1
#h2:35:respawn:/etc/init.d/init.cssd fatal >/dev/null 2>&1
#h3:35:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1

將最後三行前面的註釋符號“#”去掉,修改後如下:
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon
h1:35:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1
h2:35:respawn:/etc/init.d/init.cssd fatal >/dev/null 2>&1
h3:35:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1

2)重新載入/etc/inittab
[root@rac1 ~]# init q
[root@rac1 ~]# ps -ef | grep init | grep -v grep
root         1     0  0 14:22 ?        00:00:01 init [5]
root      3419     1  5 14:51 ?        00:00:00 /bin/sh /etc/init.d/init.evmd run
root      3420     1  8 14:51 ?        00:00:00 /bin/sh /etc/init.d/init.cssd fatal
root      3421     1  5 14:51 ?        00:00:00 /bin/sh /etc/init.d/init.crsd run
root      3450  3419  4 14:51 ?        00:00:00 /bin/sh /etc/init.d/init.cssd startcheck
root      3451  3420  0 14:51 ?        00:00:00 /bin/sh /etc/init.d/init.cssd startcheck
root      3471  3451  0 14:51 ?        00:00:00 /bin/sh /etc/init.d/init.cssd runcheck
root      3473  3450  0 14:51 ?        00:00:00 /bin/sh /etc/init.d/init.cssd runcheck
root      3477  3473  0 14:51 ?        00:00:00 /bin/sh /etc/init.d/init.cssd runcheck
[root@rac1 ~]# ps -ef | grep init | grep -v grep
root         1     0  0 14:22 ?        00:00:01 init [5]
root      3419     1  0 14:51 ?        00:00:00 /bin/sh /etc/init.d/init.evmd run
root      3420     1  1 14:51 ?        00:00:00 /bin/sh /etc/init.d/init.cssd fatal
root      3421     1  0 14:51 ?        00:00:00 /bin/sh /etc/init.d/init.crsd run
root      3450  3419  0 14:51 ?        00:00:00 /bin/sh /etc/init.d/init.cssd startcheck
root      3451  3420  0 14:51 ?        00:00:00 /bin/sh /etc/init.d/init.cssd startcheck
root      3679  3421  0 14:51 ?        00:00:00 /bin/sh /etc/init.d/init.cssd startcheck

注意,這裡有一個現象。即便這裡不使用crsctl start crs命令手工去啟動CRS,CRS同樣會自動啟動。

3)確認啟動成功後的CRS狀態
[root@rac1 ~]# crs_stat -t -v
Name           Type           R/RA   F/FT   Target    State     Host
----------------------------------------------------------------------
ora....B1.inst application    0/5    0/0    ONLINE    ONLINE    rac1
ora....B2.inst application    0/5    0/0    ONLINE    ONLINE    rac2
ora.RACDB.db   application    0/1    0/1    ONLINE    ONLINE    rac1
ora....DB1.srv application    0/1    0/0    ONLINE    ONLINE    rac1
ora....DB2.srv application    0/1    0/0    ONLINE    ONLINE    rac2
ora.....taf.cs application    0/1    0/1    ONLINE    ONLINE    rac1
ora....SM1.asm application    0/5    0/0    ONLINE    ONLINE    rac1
ora....C1.lsnr application    0/5    0/0    ONLINE    ONLINE    rac1
ora.rac1.gsd   application    0/5    0/0    ONLINE    ONLINE    rac1
ora.rac1.ons   application    0/3    0/0    ONLINE    ONLINE    rac1
ora.rac1.vip   application    0/0    0/0    ONLINE    ONLINE    rac1
ora....SM2.asm application    0/5    0/0    ONLINE    ONLINE    rac2
ora....C2.lsnr application    0/5    0/0    ONLINE    ONLINE    rac2
ora.rac2.gsd   application    0/5    0/0    ONLINE    ONLINE    rac2
ora.rac2.ons   application    0/3    0/0    ONLINE    ONLINE    rac2
ora.rac2.vip   application    0/0    0/0    ONLINE    ONLINE    rac2

4)確認成功啟動後的與CRS相關的後臺程式資訊
[root@rac1 ~]# ps -ef | grep init | grep -v grep
root         1     0  0 14:22 ?        00:00:01 init [5]
root      3420     1  0 14:51 ?        00:00:01 /bin/sh /etc/init.d/init.cssd fatal
root      3810  3420  0 14:52 ?        00:00:00 /bin/sh /etc/init.d/init.cssd daemon
[root@rac1 ~]# ps -ef | grep d.bin | grep -v grep
root      3421     1  2 14:51 ?        00:00:08 /u01/crs1020/bin/crsd.bin reboot
oracle    3796  3419  1 14:52 ?        00:00:03 /u01/crs1020/bin/evmd.bin
oracle    3972  3924  0 14:52 ?        00:00:02 /u01/crs1020/bin/ocssd.bin

4.小結
這是一個人為誤調整inittab檔案導致的問題。從問題現象和處理過程中我們應該總結出:在任何實際調整之前,請充分評估和測試修改的影響範圍。

Good luck.

secooler
11.01.05

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-683382/,如需轉載,請註明出處,否則將追究法律責任。

相關文章