RAC数据库与单实例的差异主要表现在多个实例通过集群件来统一管理共享的资源。因此原有的单实例的管理方式,如数据库、监听器等的关闭启动等可以使用原有的方式进行,也可以通过集群管理工具,命令行来集中管理,这也是推荐的管理方式。由于集群件crs位于数据库之上,即RAC数据库依赖于集群件,因此数据库的启动与关闭应该结合集群来考虑,下面以11g RAC来描述数据库启动与关闭过程。
一、RAC 数据库启动与关闭顺序
1、关闭顺序
关闭监听,关闭 Oracle 实例,关闭 ASM 实例(关闭集群件)
2、启动顺序
启动ASM实例,启动oracle实例,启动监听,启动OEM<可选>
如果未使用ASM,则启动与关闭过程的有关ASM的操作可忽略
3、主要工具
srvctl,sqlplus。本文主要描述的是使用srvctl命令来完成
以下为集群的状态:
[root@host01 ~]# crs_stat NAME=ora.DATA.dg TYPE=ora.diskgroup.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.FRA.dg TYPE=ora.diskgroup.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.LISTENER.lsnr TYPE=ora.listener.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.LISTENER_SCAN1.lsnr TYPE=ora.scan_listener.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.asm TYPE=ora.asm.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.eons TYPE=ora.eons.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.gsd TYPE=ora.gsd.type TARGET=OFFLINE STATE=OFFLINE NAME=ora.host01.ASM1.asm TYPE=application TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.host01.LISTENER_HOST01.lsnr TYPE=application TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.host01.gsd TYPE=application TARGET=OFFLINE STATE=OFFLINE NAME=ora.host01.ons TYPE=application TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.host01.vip TYPE=ora.cluster_vip_net1.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.host02.ASM2.asm TYPE=application TARGET=ONLINE STATE=ONLINE on host02 NAME=ora.host02.LISTENER_HOST02.lsnr TYPE=application TARGET=ONLINE STATE=ONLINE on host02 NAME=ora.host02.gsd TYPE=application TARGET=OFFLINE STATE=OFFLINE NAME=ora.host02.ons TYPE=application TARGET=ONLINE STATE=ONLINE on host02 NAME=ora.host02.vip TYPE=ora.cluster_vip_net1.type TARGET=ONLINE STATE=ONLINE on host02 NAME=ora.net1.network TYPE=ora.network.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.oc4j TYPE=ora.oc4j.type TARGET=OFFLINE STATE=OFFLINE NAME=ora.ons TYPE=ora.ons.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.racdb.db TYPE=ora.database.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.registry.acfs TYPE=ora.registry.acfs.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.scan1.vip TYPE=ora.scan_vip.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.scan2.vip TYPE=ora.scan_vip.type TARGET=ONLINE STATE=ONLINE on host02
现在关闭监听程序
[root@host01 cmd]# srvctl stop listener
之后的集群状态如下,注意对比监听部分的状态。
[root@host01 ~]# crs_stat NAME=ora.DATA.dg TYPE=ora.diskgroup.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.FRA.dg TYPE=ora.diskgroup.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.LISTENER.lsnr TYPE=ora.listener.type TARGET=OFFLINE STATE=OFFLINE NAME=ora.LISTENER_SCAN1.lsnr TYPE=ora.scan_listener.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.asm TYPE=ora.asm.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.eons TYPE=ora.eons.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.gsd TYPE=ora.gsd.type TARGET=OFFLINE STATE=OFFLINE NAME=ora.host01.ASM1.asm TYPE=application TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.host01.LISTENER_HOST01.lsnr TYPE=application TARGET=OFFLINE STATE=OFFLINE NAME=ora.host01.gsd TYPE=application TARGET=OFFLINE STATE=OFFLINE NAME=ora.host01.ons TYPE=application TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.host01.vip TYPE=ora.cluster_vip_net1.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.host02.ASM2.asm TYPE=application TARGET=ONLINE STATE=ONLINE on host02 NAME=ora.host02.LISTENER_HOST02.lsnr TYPE=application TARGET=OFFLINE STATE=OFFLINE NAME=ora.host02.gsd TYPE=application TARGET=OFFLINE STATE=OFFLINE NAME=ora.host02.ons TYPE=application TARGET=ONLINE STATE=ONLINE on host02 NAME=ora.host02.vip TYPE=ora.cluster_vip_net1.type TARGET=ONLINE STATE=ONLINE on host02 NAME=ora.net1.network TYPE=ora.network.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.oc4j TYPE=ora.oc4j.type TARGET=OFFLINE STATE=OFFLINE NAME=ora.ons TYPE=ora.ons.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.racdb.db TYPE=ora.database.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.registry.acfs TYPE=ora.registry.acfs.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.scan1.vip TYPE=ora.scan_vip.type TARGET=ONLINE STATE=ONLINE on host01 NAME=ora.scan2.vip TYPE=ora.scan_vip.type TARGET=ONLINE STATE=ONLINE on host02
然后查看数据库实例:
host01机器:
[root@host01 ~]# ps -ef | grep pmon oracle 3148 1 0 17:24 ? 00:00:01 asm_pmon_+ASM1 root 4182 2138 0 20:07 pts/2 00:00:00 grep pmon oracle 7965 1 0 17:55 ? 00:00:02 ora_pmon_RACDB1
[oracle@host02 ~]$ ps -ef | grep pmon oracle 3496 1 0 17:40 ? 00:00:00 asm_pmon_+ASM2 oracle 5994 1 0 17:56 ? 00:00:01 ora_pmon_RACDB2 oracle 28187 28159 0 20:08 pts/1 00:00:00 grep pmon 关闭数据库实例:
[root@host01 cmd]# srvctl stop database -d RACDB -o immediate
完成后再查看实例进程
[root@host01 ~]# ps -ef | grep pmon oracle 3148 1 0 17:24 ? 00:00:01 asm_pmon_+ASM1 root 5737 2138 0 20:13 pts/2 00:00:00 grep pmon
[oracle@host02 ~]$ ps -ef | grep pmon oracle 3496 1 0 17:40 ? 00:00:00 asm_pmon_+ASM2 oracle 29375 28159 0 20:13 pts/1 00:00:00 grep pmon
接下来停止集群件
[root@host01 cmd]# crsctl stop cluster -all
现在可以看到ASM实例也已经关闭了。
[root@host01 ~]# ps -ef | grep pmon root 8231 2138 0 20:23 pts/2 00:00:00 grep pmon
[oracle@host02 ~]$ ps -ef | grep pmon oracle 30696 28159 0 20:23 pts/1 00:00:00 grep pmon
然后就可以愉快的关闭服务器啦~~~