问题:
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进程恢复日志应用
根因修复:安装数据库补丁修复