Menu Close

Oracle 19C RAC设置实例自启动

默认情况下,Oracle 19C CRS服务是随着系统启动而自动启动的。

1. CRS服务开机启动

1.1. 查看CRS的版本

/u01/app/19.0.0.0/grid/bin/crsctl query crs softwareversion

1.2. 查看CRS是否自启动

cat /etc/oracle/scls_scr/racnode1/root/ohasdstr

如果结果是enable代表自启动。

1.3. 设置CRS自启动

/u01/app/19.0.0.0/grid/bin/crsctl enable crs

2. 数据库实例随CRS启动

默认情况下,Oracle 19C RAC中实例的AUTO_START值为restore。其中restore表示还原、恢复的含义,是把实例状态恢复到CRS停止前的状态。

  1. 如果CRS停止前,手动通过sqlplus 或者是 srvctl 停止了实例,那么在crs重启后,实例不会跟着自动启动。
  2. 如果CRS停止前,实例处于open状态,那么重启CRS(或者操作系统重启后),实例会跟着CRS启动而自动启动。
  3. 如果在没有停止实例前,直接停止CRS,实例是以abort方式停止的[Shutting down instance(abort)]。

把AUTO_START由restore改成always后,无论crs停止前实例是open还是close状态,实例都会跟着CRS启动而启动。

/u01/app/19.0.0.0/grid/bin/crsctl stat res ora.racdb.db -p|grep AUTO_START

AUTO_START=restore

如果AUTO_START值是默认的restore,那么Oracle 19C RAC需要使用oracle用户手动启动oracle实例:

su - oracle
/u01/app/oracle/product/19.0.0.0/dbhome_1/bin/srvctl start database -d racdb

这样,在root用户下执行:

~]# /u01/app/19.0.0.0/grid/bin/crsctl stat res ora.racdb.db -t

或者在oracle用户下执行:

~]$ /u01/app/oracle/product/19.0.0.0/dbhome_1/bin/srvctl status instance -d racdb -i racdb1,racdb2 -f -v
#实例才会显示是ONLINE状态的。

设置Oracle 19C RAC实例自启动的方法是修改AUTO_START=always。

~]# /u01/app/19.0.0.0/grid/bin/crsctl modify resource "ora.racdb.db" -attr "AUTO_START=always" -unsupported

这里有个技巧是自从12.1.0.2之后,如果使用crsctl 进行ora resource的修改、启动、关闭,都会遭遇CRS-4995The command 'Modify resource' is invalid in crsctl. Use srvctl for this command.的错误。

解决方法是加上-unsupported的参数。

修改完成后查看自启动参数:

~]# /u01/app/19.0.0.0/grid/bin/crsctl stat res ora.racdb.db -p|grep AUTO_START
~]$ /u01/app/oracle/product/19.0.0.0/dbhome_1/bin/srvctl status instance -d racdb -i racdb1,racdb2 -f -v
~]$ /u01/app/oracle/product/19.0.0.0/dbhome_1/bin/srvctl status database -d racdb
才会显示是ONLINE状态的。