问题描述:“CDC_MANAGER” 的时候一直处于等待状态,抽取过程“CDC_MANAGER”放到 PL/SQL Developer中的 Command Window 中运行 “exec cdc_manager('1');” 命令是正常执行,一点问题都没有。
山东CDC的JOB执行挂起,现初步认定一个session阻塞了,该操作为屏蔽了B_ASJ_WSCHANGEAREA表的所有trigger,但改SESSION已阻塞挂起很久了,由sqlplus.exe人为发起的。
session不能杀。
需要杀进程:
10.55.127.52上的spid=8655
目前还不知还有多少表存在该问题,此问题是我们脚本导入数据引起的异常。需要杀掉这个进程后再观察确认。因为同步CDC模式是采用系统trigger实现的,disable all triggers后同时也屏蔽该表的CDC,如果执行异常没有释放资源和启动trigger就会引起目前的问题。如果要外部导入数据,又想CDC能捕捉数据,请只屏蔽具体的表上的trigger而不是全部trigger.
杀掉进程后进一步观察。在节点52上执行CDC的JOB出现gc cr request等待事件,同时发现em使用的snapshot所用的mmon进程也出现gc cr request等待事件,说明节点52访问远程节点49的数据块有问题?可能存在RAC间内部通讯效率不高的问题。
CDC使用的job创建时没有指定在那个节点上运行,数据库随机选择了节点2来运行,因此说明CDC的使用的资源都在节点1上创建的,节点2访问就会形成如上等待事件。因此重新创建JOB,指定在节点1(49)上运行,避免读远程数据块形成gc cr request等待事件。新job指定时间自动运行成功,问题解决,但说明节点2同过节点间的网络访问节点1存在问题.CDC的JOB在聊城以后需要重新创建时,都请指定在1节点上运行。
现将聊城的CDC job指定为一天一次,观察几天。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22878696/viewspace-694532/
,如需转载,请注明出处,否则将追究法律责任。