问题:
Oracle11.2.0.4.5的版本,ADG备库mrp进程出现无法应用日志的问题
问题原因分析:
查看当前mrp进程的状态,当前在应用日志thread# 1 626298
select inst_id,process,thread#,sequence#,status from gv$managed_standby;
备库查看日志的状态,日志已经投递到备库并且还未被删除
select thread#,sequence#,deleted,dest_id
from v$archived_log
where sequence#=626298
对mrp进程进行10046跟踪,查看mrp进程一直在等待parallel recovery control message reply,等待并行子进程的信息回复
SQL> select process,pid from V$managed_standby where process like '%MRP%';
PROCESS PID
--------------------------- ----------
MRP0 87986
SQL> oradebug setospid 87986
Oracle pid: 92, Unix process pid: 87986, image: oracle@db1 (MRP0)
SQL> oradebug unlimit
Statement processed.
SQL> oradebug Event 10046 trace name context forever, level 12
Statement processed.
SQL> oradebug Event 10046 trace name context off
Statement processed.
SQL> oradebug tracefile_name
查看并行应用子进程的等待,除了正常的parallel recovery slave next change等待之后,出现了gc buffer的请求等待gc buffer busy release
还看到,会话出现大量的buffer busy wait以及buffer deadlock
这个问题是由于bug 17695685导致的mrp进程在应用日志时出现Media Recovery buffer等待,并伴随buffer deadlock/"gc buffer busy acquire"等待
问题修复:
临时的规避方法:强制kill了mrp以及pr子进程,重启mrp进程恢复日志应用
根因修复:安装数据库补丁修复