ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 解决一个问题:rac环境上创建一个job 总是在执行,但放到命令行里调用立即可以执行

解决一个问题:rac环境上创建一个job 总是在执行,但放到命令行里调用立即可以执行

原创 Linux操作系统 作者:libingquan008 时间:2011-05-05 17:00:58 0 删除 编辑
问题描述:“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博客 ” ,链接:http://blog.itpub.net/22878696/viewspace-694532/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-02-10

  • 博文量
    46
  • 访问量
    120296