首页  >  文章  >  数据库  >  oracle rac如何关闭

oracle rac如何关闭

藏色散人
藏色散人原创
2021-12-29 15:12:144525浏览

关闭oracle rac的方法:1、停止各节点的监听服务;2、关闭数据库实例;3、关闭ASM实例;4、使用crs_stat命令查询RAC节点的服务状态是否正常;5、停止CRS集群软件即可。

oracle rac如何关闭

本教程操作环境: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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn