Oracle 集群(RAC)的启动与关闭
Oracle RAC启动与关闭的时候需要注意以下几点:
一、检查共享设备
二、自动启动RAC并检查相关进程
三、手动启动RAC
四、在启动的过程中最好检测着crs、ASM和数据库的日志。
一、检查共享设备
一般情况下,存放OCR和VotingDisk的OCFS2或者raw都是自动启动的。如果他们没有启动,RAC肯定是启动不了的。
1.1如果使用ocfs2的,检查ocfs2状态
/etc/init.d/o2cbstatus
在挂载之前,/etc/init.d/o2cbstatus显示为CheckingO2CBheartbeat:Notactive。
在格式化和挂载文件系统之前,应验证O2CB在两个节点上均联机;O2CB心跳当前没有
活动,因为文件系统还没有挂载。挂载之后就会变成active。
mount-tocfs2-odatavolume/dev/sdb1/u02/oradata/orcl
1,2.如果使用rawdevice.
[root@raw1~]#cd/dev/raw/
[root@raw1raw]#ls
raw1raw2
或者:
[[email protected]]#/etc/init.d/rawdevicesstatus
/dev/raw/raw1:boundtomajor8,minor17
/dev/raw/raw2:boundtomajor8,minor18
1.3.检查ASM
/etc/init.d/oracleasmlistdisks
二、自动启动RAC并检查相关进程
RAC在启动的时候crs等进程都是自动启动的:
[[email protected]]#ls-l/etc/init.d/init.*
-r-xr-xr-x1rootroot1951Feb2622:38/etc/init.d/init.crs
-r-xr-xr-x1rootroot4714Feb2622:38/etc/init.d/init.crsd
-r-xr-xr-x1rootroot35394Feb2622:38/etc/init.d/init.cssd
-r-xr-xr-x1rootroot3190Feb2622:38/etc/init.d/init.evmd
我们要查看一下crs的状态:
正常情况下,进程都是online的:
[root@raw1bin]#./crs_stat-t
NameTypeTargetStateHost
------------------------------------------------------------
ora.raw.dbapplicationONLINEONLINEraw1
ora.raw.raw.csapplicationONLINEONLINEraw1
ora....aw1.srvapplicationONLINEONLINEraw1
ora....aw2.srvapplicationONLINEONLINEraw2
ora....w1.instapplicationONLINEONLINEraw1
ora....w2.instapplicationONLINEONLINEraw2
ora....SM1.asmapplicationONLINEONLINEraw1
ora....W1.lsnrapplicationONLINEONLINEraw1
ora.raw1.gsdapplicationONLINEONLINEraw1
ora.raw1.onsapplicationONLINEONLINEraw1
ora.raw1.vipapplicationONLINEONLINEraw1
ora....SM2.asmapplicationONLINEONLINEraw2
ora....W2.lsnrapplicationONLINEONLINEraw2
ora.raw2.gsdapplicationONLINEONLINEraw2
ora.raw2.onsapplicationONLINEONLINEraw2
ora.raw2.vipapplicationONLINEONLINEraw2
如果出现以下情况:
[root@rac2bin]#./crs_stat-t
NameTypeTargetStateHost
------------------------------------------------------------
ora.rac.dbapplicationONLINEUNKNOWNrac1
ora....orcl.csapplicationONLINEUNKNOWNrac1
ora....ac1.srvapplicationOFFLINEOFFLINE
ora....ac2.srvapplicationOFFLINEOFFLINE
ora....c1.instapplicationONLINEUNKNOWNrac1
ora....c2.instapplicationONLINEUNKNOWNrac2
ora....SM1.asmapplicationONLINEONLINErac1
ora....C1.lsnrapplicationONLINEUNKNOWNrac1
ora.rac1.gsdapplicationONLINEUNKNOWNrac1
ora.rac1.onsapplicationONLINEONLINErac1
ora.rac1.vipapplicationONLINEONLINErac1
ora....SM2.asmapplicationONLINEONLINErac2
ora....C2.lsnrapplicationONLINEUNKNOWNrac2
ora.rac2.gsdapplicationONLINEUNKNOWNrac2
ora.rac2.onsapplicationONLINEONLINErac2
ora.rac2.vipapplicationONLINEONLINErac2
解决方法:
1.用crs_stat查看进程全部信息:
[root@rac2bin]#./crs_stat
NAME=ora.rac.db
TYPE=application
TARGET=ONLINE
STATE=ONLINEonrac2
NAME=ora.rac1.LISTENER_RAC1.lsnr
TYPE=application
TARGET=ONLINE
STATE=UNKNOWNonrac1
NAME=ora.rac1.gsd
TYPE=application
TARGET=ONLINE
STATE=UNKNOWNonrac1
NAME=ora.rac2.LISTENER_RAC2.lsnr
TYPE=application
TARGET=ONLINE
STATE=UNKNOWNonrac2
......
2.对于offline的进程,我们可以直接手动的启动它
[root@rac2bin]#./crs_startora.rac.orcl.rac1.srv
Attemptingtostart`ora.rac.orcl.rac1.srv`onmember`rac1`
Startof`ora.rac.orcl.rac1.srv`onmember`rac1`succeeded.、
3.对于UNKNOWN的进程,我们可以先stop它,在start。
[root@rac2bin]#./crs_stopora.rac2.gsd
Attemptingtostop`ora.rac2.gsd`onmember`rac2`
Stopof`ora.rac2.gsd`onmember`rac2`succeeded.
[root@rac2bin]#./crs_startora.rac2.gsd
Attemptingtostart`ora.rac2.gsd`onmember`rac2`
Startof`ora.rac2.gsd`onmember`rac2`succeeded.
4.如果crs_stop不能结束,crs_start不能启动的进程,我们有2中方法来解决:
4.1)是用crs_stop-f参数把crs中状态是UNKNOWN的服务关掉,然后再用crs_start-f(加一个-f的参数)启动所有的服务就可以。要分别在两个节点上执行;
[oracle@rac2~]$crs_start-fora.ora9i.ora9i2.inst
Attemptingtostart`ora.ora9i.ora9i2.inst`onmember`rac2`
Startof`ora.ora9i.ora9i2.inst`onmember`rac2`succeeded.
[oracle@rac2~]$crs_stop-fora.ora9i.db
Attemptingtostop`ora.ora9i.db`onmember`rac2`
Stopof`ora.ora9i.db`onmember`rac2`succeeded.
4.2)转换到root用户下用/etc/init.d/init.crsstop先禁用crs,然后再用/etc/init.d/init.crsstart去启用crs,启用crs后会自动启动crs的一系列服务,注意此种方法需要在两台节点上都执行;
5.可以用命令一次启动和关闭相关进程
[root@rac2bin]#./crs_stop-all
[root@rac2bin]#./crs_start-all
三、手动启动RAC
一般情况下每次节点启动的时候,所有服务都会自动启动,如果需要关闭或者启动某个节点,如下所示
停止RAC:
emctlstopdbconsole
srvctlstopinstance-draw-iraw1
srvctlstopinstance-draw-iraw2
srvctlstopasm-nraw1
srvctlstopasm-nraw2
srvctlstopnodeapps-nraw1
srvctlstopnodeapps-nraw2
启动RAC:
和上面的步骤正好相反即
srvctlstartnodeapps-nraw1
srvctlstartnodeapps-nraw2
srvctlstartasm-nraw1
srvctlstartasm-nraw2
srvctlstartinstance-draw-iraw2
srvctlstartinstance-dorcl-iraw1
emctlstartdbconsole
使用SRVCTL启动/停止所有实例及其启用的服务。
srvctlstartdatabase-dorcl
srvctlstopdatabase-dorcl
注:CRSResource包括GSD(GlobalServeiceDaemon),ONS(OracleNotificationService),VIP,Database,Instance和Service.这些资源被分成2类:
GSD,ONS,VIP和Listener属于Noteapps类
Database,Instance和Service属于Database-RelatedResource类。
四、在启动的过程中最好检测着crs、ASM和数据库的日志:
crs日志:
[oracle@rac1~]$tail-f/u01/app/oracle/product/10.2.0/crs_1/log/rac1/alertrac1.log
[oracle@rac2~]$tail-f/u01/app/oracle/product/10.2.0/crs_1/log/rac2/alertrac2.log
ASM日志:
[oracle@rac1~]$tail-f/u01/app/oracle/admin/+ASM/bdump/alert_+ASM1.log
[oracle@rac2~]$tail-f/u01/app/oracle/admin/+ASM/bdump/alert_+ASM2.log
数据库日志:
[oracle@rac1~]$tail-f/u01/app/oracle/admin/ora9i/bdump/alert_ora9i1.log
[oracle@rac2~]$tail-f/u01/app/oracle/admin/ora9i/bdump/alert_ora9i2.log
注:tail-f命令可用于监视另一个进程正在写入的文件的增长。