RAC数据库与单实例的差异主要表现在多个实例通过集群件来统一管理共享的资源。因此原有的单实例的管理方式,如数据库、监听器等的关闭启动等可以使用原有的方式进行,也可以通过集群管理工具,命令行来集中管理,这也是推荐的管理方式。由于集群件crs位于数据库之上,即RAC数据库依赖于集群件,因此数据库的启动与关闭应该结合集群来考虑,下面以10g RAC来描述数据库启动与关闭过程,不涉及集群层的启动与关闭。


一、RAC 数据库启动与关闭顺序

1、关闭顺序

 关闭OEM,关闭监听,关闭 Oracle 实例,关闭 ASM 实例,关闭节点应用程序

2、启动顺序

 启动节点应用程序,启动ASM实例,启动oracle实例,启动监听,启动OEM<可选>

 如果未使用ASM,则启动与关闭过程的有关ASM的操作可忽略

3、主要工具

 srvctl,OEM,sqlplus。本文主要描述的是使用srvctl命令来完成


二、演示环境

1、环境  

   主机名      库名      实例名     asm实例  

   --------    ------    -------    --------  

   bo2dbp      GOBO4     GOBO4A     +ASM1  

   bo2dbs     GOBO4        GOBO4B     +ASM2  


2、数据库状态  

   oracle@bo2dbp:~> ./crs_stat.sh  

    Resource name                                Target     State              

   --------------                                ------     -----              

   ora.GOBO4.GOBO4A.inst                         ONLINE     ONLINE on bo2dbp    

   ora.GOBO4.GOBO4B.inst                         ONLINE     ONLINE on bo2dbs    

   ora.GOBO4.db                                  ONLINE     ONLINE on bo2dbp    

   ora.bo2dbp.ASM1.asm                           ONLINE     ONLINE on bo2dbp    

   ora.bo2dbp.LISTENER_BO2DBP.lsnr               ONLINE     ONLINE on bo2dbp    

   ora.bo2dbp.LISTENER_ORA10G_BO2DBP.lsnr        ONLINE     ONLINE on bo2dbp    

   ora.bo2dbp.gsd                                ONLINE     ONLINE on bo2dbp    

   ora.bo2dbp.ons                                ONLINE     ONLINE on bo2dbp    

   ora.bo2dbp.vip                                ONLINE     ONLINE on bo2dbp    

   ora.bo2dbs.ASM2.asm                           ONLINE     ONLINE on bo2dbs    

   ora.bo2dbs.LISTENER_BO2DBS.lsnr               ONLINE     ONLINE on bo2dbs    

   ora.bo2dbs.LISTENER_ORA10G_BO2DBS.lsnr        ONLINE     ONLINE on bo2dbs    

   ora.bo2dbs.gsd                                ONLINE     ONLINE on bo2dbs    

   ora.bo2dbs.ons                                ONLINE     ONLINE on bo2dbs    

   ora.bo2dbs.vip                                ONLINE     ONLINE on bo2dbs    

   ora.ora10g.db                                 ONLINE     ONLINE on bo2dbs    

   ora.ora10g.hr_ora10g.cs                       ONLINE     ONLINE on bo2dbp    

   ora.ora10g.hr_ora10g.ora10g1.srv              ONLINE     ONLINE on bo2dbp    

   ora.ora10g.ora10g1.inst                       ONLINE     ONLINE on bo2dbp    

   ora.ora10g.ora10g2.inst                       ONLINE     ONLINE on bo2dbs  


   上面的查询结果表明,当前集群中存在2个RAC数据库,一个是GOBO4,一个是ora10g  

   每个节点上配置了两个监听器,一个是缺省的1521端口监听器,一个是非缺省的监听器(LISTENER_ORA10G_BO2DBP)  

   数据库ora10g上创建了service为hr_ora10g  


3、srvctl 命令  

   srvctl是管理RAC数据库使用最频繁的命令,是service control的缩写,基本的用法是srvctl <command> <object> [<options>]。  

   直接在命令行下输入srvctl 则出现该命令的用法说明  

   该命令方式可以操作下列资源  

   database,instance,asm,service,listener,node application(GSD,ONS,VIP)


三、关闭数据库

1、关闭oem服务(如果启动了oem,则应首先关闭oem服务,否则跳过)  

   export ORACLE_SID=GOBO4A  

   emctl stop dbconsole  


2、关闭Oracle实例  

   srvctl stop instance -d GOBO4 -i GOBO4A  


3、关闭ASM实例  

   srvctl stop asm -n bo2dbp  


4、关闭节点服务(此操作将关闭指定节点的所有监听以及GSD,ONS,VIP)  

   srvctl stop nodeapps -n bo2dbp        


   节点bo2dbp关闭后的结果  

   oracle@bo2dbp:~> ./crs_stat.sh  

    Resource name                                Target     State              

   --------------                                ------     -----              

   ora.GOBO4.GOBO4A.inst                         OFFLINE    OFFLINE            

   ora.GOBO4.GOBO4B.inst                         ONLINE     ONLINE on bo2dbs    

   ora.GOBO4.db                                  ONLINE     ONLINE on bo2dbs    

   ora.bo2dbp.ASM1.asm                           OFFLINE    OFFLINE            

   ora.bo2dbp.LISTENER_BO2DBP.lsnr               OFFLINE    OFFLINE            

   ora.bo2dbp.LISTENER_ORA10G_BO2DBP.lsnr        OFFLINE    OFFLINE            

   ora.bo2dbp.gsd                                OFFLINE    OFFLINE            

   ora.bo2dbp.ons                                OFFLINE    OFFLINE            

   ora.bo2dbp.vip                                OFFLINE    OFFLINE            

   ora.bo2dbs.ASM2.asm                           ONLINE     ONLINE on bo2dbs    

   ora.bo2dbs.LISTENER_BO2DBS.lsnr               ONLINE     ONLINE on bo2dbs    

   ora.bo2dbs.LISTENER_ORA10G_BO2DBS.lsnr        ONLINE     ONLINE on bo2dbs    

   ora.bo2dbs.gsd                                ONLINE     ONLINE on bo2dbs    

   ora.bo2dbs.ons                                ONLINE     ONLINE on bo2dbs    

   ora.bo2dbs.vip                                ONLINE     ONLINE on bo2dbs    

   ora.ora10g.db                                 ONLINE     ONLINE on bo2dbs    

   ora.ora10g.hr_ora10g.cs                       ONLINE     ONLINE on bo2dbs    

   ora.ora10g.hr_ora10g.ora10g1.srv              ONLINE     ONLINE on bo2dbs    

   ora.ora10g.ora10g1.inst                       OFFLINE    OFFLINE    #注,由于bo2dbp上的ASM被关闭,所以实例ora10g1也被关闭        

   ora.ora10g.ora10g2.inst                       ONLINE     ONLINE on bo2dbs    


   如果是关闭整个数据库,则使用如下命令  

   srvctl stop database -d <db_name>  

   上述命令使用后则,所有该数据库上的实例都将被关闭以及对应的.db的服务也会被关闭,如下  

   oracle@bo2dbp:~> ./crs_stat.sh  

    Resource name                                Target     State              

   --------------                                ------     -----              

   ora.GOBO4.GOBO4A.inst                         OFFLINE    OFFLINE            

   ora.GOBO4.GOBO4B.inst                         OFFLINE    OFFLINE            

   ora.GOBO4.db                                  OFFLINE    OFFLINE  


   对于监听器也可以使用srvctl来完成  

       srvctl stop listener -n bo2dbp #关闭节点上缺省端口的监听器  

       srvctl stop listener -n bo2dbp -l LISTENER_ORA10G_BO2DBP #此监听器为非缺省的,因此指定-l 加监听器的名字  


四、启动数据库

1、启动节点服务

 srvctl start nodeapps -n bo2dbp

2、启动ASM实例

 srvctl start asm -n bo2dbp

3、启动Oracle实例

 srvctl start instance -d GOBO4 -i GOBO4A

4、启动OEM

 export ORACLE_SID=GOBO4A

 emctl start dbconsole


 如果是启动整个数据库,则使用如下命令

 srvctl start database -d <db_name>


五、小结

1、RAC数据库的启动需要考虑各个层次之间的依赖关系。集群数据库依赖于集群件上的服务,因此必须先启动集群上的相关服务(ONS,GSD,VIP)

2、接下来在集群件服务之下的为ASM,ASM为共享存储提供统一管理,因此需要于实例先启动

3、启动实例,将数据库切换到open 模式

4、RAC数据库的关闭则正好与之相反,同样是按逐层递进的关系来进行


oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html