故障问题:
最近生产环境(oracle19c rac两节点)突然反馈业务异常,主数据库挂住了,节点1可正常操作,但节点2查询卡住。
故障处理:
一开始原运维人员和开发人员反馈说(以往都是这么处理)有锁alter system kill后killed状态也无法释放;
所以考虑根据spid删除相应的客户端进程,但发现,系统上的进程kill掉也无效,系统还是挂住;

查锁方法可参考:
https://www.modb.pro/db/623536
既然节点2已经无法使用,和用户商量尝试重启节点2实例,发现shutdown immediate也是卡住。
新开窗口删掉相应的客户端进程:(数据库长时间无法正常停止的时候,会考虑强制删除客户端进程)
先确认需要kill客户端进程是否正确(因为节点上有多个不同的数据库实例,不能kill错)
ps -ef|grep LOCAL=NO|grep -v grep|awk '{print $2}'|grep 实例名
执行kill:
ps -ef|grep LOCAL=NO|grep -v grep|awk '{print $2}'|grep 实例名|xargs kill -9
新开窗口检查alert日志,注意到之前就有提示归档恢复区空间满了((未截图),确认检查恢复区满了。这才是根本原因。
select * from v$flash_recovery_area_usage;

按理系统上是有定时任务每天删除归档日志的,保留15天。运行几年了都没出过故障,不应该出现这样的问题。
于是尝试手动删除处理:
检查节点上运行的实例进程:
ps -ef|grep ora_smon
切换实例处理归档:
export ORACLE_SID=xxx
rman target /
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE - 15';
发现报错提示如下,归档竟然并没有被删除:(注意是主库有问题,而备库可以删除)
RMAN-08137:warning:archived log not deleted, needed for standby or upstream capture process
想起最近用户有搭建过ADG备库,原因必然是这了。
然后尝试增加隐含参数,发现依然无效:
alter system set "_deferred_log_dest_is_valid" = FALSE scope=both sid='*';
然后执行DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE - 15';
没有效果,还原参数吧。
alter system reset "_deferred_log_dest_is_valid" scope=both sid='*';
再尝试执行强制force删除操作后可以删除,空间得以释放,系统恢复正常:
DELETE NOPROMPT FORCE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE - 15';


未添加force时,执行失败:

使用force后有提示警告如下(可忽略该警告):
RMAN-08591: WARNING: invalid archived log deletion policy
处理参考:
The solution to this warning is to change the archivelog deletion policy to APPLIED ON ALL STANDBY in cases where you only have one remote archive destination.
Clear the existing configuration setting using the following
RMAN>CONFIGURE ARCHIVELOG DELETION POLICY CLEAR;
then set the archivelog deletion policy to applied on all standby
RMAN>CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;--增加这个后不用force也可正常删除归档了。

归档删除释放后,可以看到归档空间占有率下降到10%以下。

另外测试原删除归档脚本时发现还有以下错误,可能是由于特定目标库修改过sys密码等信息导致脚本失效。

最后修改自动删除归档日志的脚本,确保后续任务可正常:
不用tnsnames密码连接方式,直接使用ORACLE_SID方式连接删除:

测试自动删除脚本正常:

小结:
1.定时检查磁盘空间、恢复区的占用情况,及时发现问题并处理
2.涉及adg的环境,一定注意归档日志删除脚本和参数配置的问题
3.建议用户尽快部署rman备份策略(目前仅逻辑备份策略)
相关参考:
https://blog.csdn.net/lixiaohuiok111/article/details/78179741
https://www.jianshu.com/p/e9fccc322f23
RMAN-08137/RMAN-08120: Warning: Archive Log Not Deleted (Doc ID 374421.1)
Delete Archivelog Fails With Error RMAN-08137 On Primary Database (Doc ID 2967957.1)
RMAN-08137 while Deleting Archived Logs from Standby (Doc ID 2169282.1)
Data Guard Physical Standby - RMAN configure archivelog deletion policy reports RMAN-08591 (Doc ID 1984064.1)




