Oracle 11.2.0.4 RAC 安全停库
作为一名数据库管理员,难免有一些机器的停机检修,主机网络资源的调整,最基本的一个动作就是停库,一般看来数据库停库不就是shutdown ? 非也,要做到数据库的安全停库,一系列的操作和检查是非常有必要的。下文详细列举了oracle11g RAC的安全停库操作步骤。
第一步: 检查主机状态,查看集群状态
hostname 查看主机,避免误操作。
id 查看当前用户,确保是oracle 或者 grid。
查看crs集群状态,确保所有的集群资源都在正确的主机上,没有发生任何迁移。
crsctl stat res -t
第二步: 处理监听,只能停单节点监听
停单节点监听(只能停单节点)
su - grid
lsnrctl stop
检查该节点的监听是否正常停止。
crsctl stat res -t
第三步:开始安全停库
安全停库前,建议多开几个CRT窗口,实时监控alert.log日志。以防发生异常,需要做处理
3.1 杀会话,查杀该节点所有的LOCAL=NO的会话
ps -ef|grep LOCAL=NO|awk '{print $2}'|xargs kill -9
3.2 查看是否有大事物回滚,如存在需等待回滚完毕,下面两条语句执行后查询为空就代表当前没有事物需要回滚。
select * from v$FAST_START_TRANSACTIONS where UNDOBLOCKSDONE <> UNDOBLOCKSTOTAL;
select undoblocksdone,undoblockstotal from v$fast_start_transactions where state<>'RECOVERED';
3.3 切换日志文件,执行checkpoint,循环多次执行以下两条语句
alter system switch logfile;
alter system checkpoint;
3.4 执行shutdown
shutdown immediate;
exit;
查看alert 日志有无异常报错信息
第三步:停集群资源
使用root用户, 执行 crsctl stop crs;
第四步: 检查是否还有oracle的进程
ps -ef | grep d.bin
ps -ef | grep oracle
ps -ef | grep grid
最后,需要确认, alert.log 有无异常报错, crs日志有无异常报错, 如果都没有。至此,方可确认数据库已经安全停止。