关闭oracle rac的方法:1、停止各节点的监听服务;2、关闭数据库实例;3、关闭ASM实例;4、使用crs_stat命令查询RAC节点的服务状态是否正常;5、停止CRS集群软件即可。
本教程操作环境:Windows7系统、Oracle 11g版、Dell G3电脑。
如何正确启动关闭 Oracle RAC?
如果要关闭Oracle集群数据库系统,简单粗暴的方式是,操作系统执行OS命令:shutdown -h now;
这种方式比较暴力,可以将数据库系统关闭,但是这样操作,Oracle的某些服务可能没有正常关闭,再次启动OS之后会出现好多服务处于UNKNOW的状态。
那么如何正确的根据Oracle工作机制来关闭和启动RAC?
RAC关闭的合理顺序:(注意事项:退出所有的客户端连接,比如SQLplus ...)
停止各节点的监听服务-->>关闭数据库(实例)-->>关闭ASM实例-->>关闭节点集群服务-->>关闭服务器
1.停止各节点的监听服务
检查监听状态:
srvctl status listener -n node1
关闭监听:
[oracle@node1 ~]$ srvctl stop listener -n node1 [oracle@node2 ~]$ srvctl stop listener -n node2
可以用上述命令在两个节点上分别停止对应的监听,也可以用以下命令在一个节点上执行,停止所有的监听。
[oracle@node1 ~]$ srvctl stop listener
再次检查监听状态:
2.关闭数据库实例
(1)查看数据库实例名:select instance_name from v$instance;
例如查到的数据库实例名是:DEVDB
(2)使用srvctl (service control)命令依次关闭集群服务 (注意:退出上边的sqlplus客户端,否则数据库无法正常关闭)
A.检查数据库实例状态 (oracle用户下执行)
srvctl status database -d DEVDB (数据库实例名根据实际填写,并且区分大小写)
b 关闭数据库实例:
srvctl stop database -d DEVDB
以上命令仅在一个节点上执行就可以,也可以分别在两个节点上分开执行以下命令,实现相同的功能。
srvctl stop instance -d DEVDB -i devdb1 (填写自实际的INSTANCE_NAME) srvctl stop instance -d DEVDB -i devdb2
C 查看关闭状态:srvctl status database -d DEVDB
3.关闭ASM实例
查看ASM运行状态:srvctl status asm -n node1
停止ASM实例:
srvctl stop asm -n node1
4.关闭RAC(CRS)集群服务
(1)使用crs_stat 命令查询RAC节点的服务状态是否正常 (root或者grid用户)
crs_stat -t -v
(2)停止CRS集群服务
停止两个节点的服务:
srvctl stop nodeapps -n node1 srvctl stop nodeapps -n node2
****
(3)停止CRS集群软件
[root@node1 ~]# find / -name crsctl [root@node1 ~]# /u01/grid/11.2.0.4/bin/crsctl stop crs (分别在两个节点的root用户下执行) CRS-2791: 正在启动用于关闭 'rac1' 上 Oracle High Availability Services 管理的资源的操作 CRS-2673: 尝试停止 'ora.crsd' (在 'rac1' 上) CRS-2790: 正在启动关闭 'rac1' 上集群就绪服务管理的资源的操作 CRS-2673: 尝试停止 'ora.asm' (在 'rac1' 上) CRS-2677: 成功停止 'ora.asm' (在 'rac1' 上) CRS-2792: 关闭 'rac1' 上集群就绪服务管理的资源的操作已完成 CRS-2677: 成功停止 'ora.crsd' (在 'rac1' 上) CRS-2673: 尝试停止 'ora.cssdmonitor' (在 'rac1' 上) CRS-2673: 尝试停止 'ora.ctssd' (在 'rac1' 上) CRS-2673: 尝试停止 'ora.evmd' (在 'rac1' 上) CRS-2673: 尝试停止 'ora.asm' (在 'rac1' 上) CRS-2673: 尝试停止 'ora.mdnsd' (在 'rac1' 上) CRS-2677: 成功停止 'ora.cssdmonitor' (在 'rac1' 上) CRS-2677: 成功停止 'ora.evmd' (在 'rac1' 上) CRS-2677: 成功停止 'ora.mdnsd' (在 'rac1' 上) CRS-2677: 成功停止 'ora.ctssd' (在 'rac1' 上) CRS-2677: 成功停止 'ora.asm' (在 'rac1' 上) CRS-2673: 尝试停止 'ora.cssd' (在 'rac1' 上) CRS-2677: 成功停止 'ora.cssd' (在 'rac1' 上) CRS-2673: 尝试停止 'ora.gpnpd' (在 'rac1' 上) CRS-2673: 尝试停止 'ora.diskmon' (在 'rac1' 上) CRS-2677: 成功停止 'ora.gpnpd' (在 'rac1' 上) CRS-2673: 尝试停止 'ora.gipcd' (在 'rac1' 上) CRS-2677: 成功停止 'ora.gipcd' (在 'rac1' 上) CRS-2677: 成功停止 'ora.diskmon' (在 'rac1' 上) CRS-2793: 关闭 'rac1' 上 Oracle High Availability Services 管理的资源的操作已完成 CRS-4133: Oracle High Availability Services has been stopped.
注意:停止数据库集群软件,在一个节点执行即可,在节点2就不用执行了。
(4)再次查看两个节点的CRS服务状态:
[grid@node1 ~]$ crs_stat -t -v CRS-0184: Cannot communicate with the CRS daemon. (服务已经关闭) [grid@node2 ~]$ crs_stat -t -v CRS-0184: Cannot communicate with the CRS daemon. (服务已经关闭)
当上述操作都执行完成,并且正常关闭后,就可以将服务器的关闭了。
================
启动的顺序和关闭相反
启动服务器-->>启动服务-->>启动ASM-->>启动实例-->>启动监听
这里我们需要注意;Oracle RAC集群软件有一个属性可以设置,就是当服务器操作系统重启后,集群服务是否会随着操作系统一块启动;上边启动的顺序步骤是在:当禁用该自启动属性的情况下的操作顺序;关于该属性的查看与设置,详见下一篇稳文章:关于集群自启动的查看。
(1)首先启动服务器
(2)启动CRS软件:
[root@node1 ~]# find / -name crsctl [root@node1 ~]# /u01/grid/11.2.0.4/bin/crsctl start crs
查看服务:
srvctl status nodeapps -n node1 srvctl status nodeapps -n node2 crsctl status res – -t
(3)启动ASM
查看ASM状态
srvctl status asm -n node1
启动ASM
srvctl start asm -n node1 srvctl start asm -n node2
(4)启动实例
srvctl status database -d node1 srvctl start database -d node2
(5)启动监听
srvctl status listener (RAC环境) srvctl start listener 或者 lsnrctl start
===============================
重启=关闭+启动
从上述各步可以看出,关闭和开启都是分步执行的,这样操作还有一个好处,可以帮助我们发现定位问题。
推荐教程:《Oracle使用教程》
以上是oracle rac如何关闭的详细内容。更多信息请关注PHP中文网其他相关文章!