Oracle goldengate的触发器错误 OGG-00869


Goldengate在复制进程replicat报错:

如下日志:

2011-06-24 16:25:21 WARNING OGG-00869 OCI Error ORA-04098: trigger 'T_MLOG_LOG_DTL_SUBMIT_STATE' is invalid and failed re-validation (status = 4098), SQL <UPDATE "MLOG_ADM_DAILY_LOG_ORG_DTL" SET "INSTRUMENT_STATE" = :a1,"NOTE" = :a2,"DRILL_DEPTH" = :a3,"UPTO_WELL_FORM" = :a4,"MUD_DENSITY" = :a5,"MUD_VISCOSITY" = :a6,"PLAN_LANDFALL" = :a7,"CONS_>.

2011-06-24 16:25:21 WARNING OGG-01004 Aborted grouped transaction on 'MLOG_ADM_DAILY_LOG_ORG_DTL', Database error 4098 (ORA-04098: trigger 'T_MLOG_LOG_DTL_SUBMIT_STATE' is invalid and failed re-validation).

2011-06-24 16:25:21 WARNING OGG-01003 Repositioning to rba34721235 inseqno 25.

2011-06-24 16:25:21 WARNING OGG-01003 Repositioning to rba34721235 inseqno 25.

Source Context :

 SourceModule           : [er.main]

 SourceID               : [/mnt/ecloud/workspace/Build_OpenSys_r11.1.1.0.15_001_[41784]/perforce/src/app/er/rep.c]

 SourceFunction         : [take_rep_err_action]

 SourceLine             : [15809]

2011-06-24 16:25:21 ERROR  OGG-01296 Error mapping from MLOG_ADM_DAILY_LOG_ORG_DTL to MLOG_ADM_DAILY_LOG_ORG_DTL.

可以在目标端数据库disable该触发器。

查询需要disable的触发器

select'alter trigger '||owner||'.'||trigger_name||' disable;'fromdba_triggers twherewner='UserTest'
andt.status!=
'DISABLED'

执行查询的脚本:

altertriggerUserTest.T_MLOG_LOG_DTL_SUBMIT_STATEdisable;

在源库修改触发器,或传输到目标端的数据库,并且把目标端的触发器修改成enable。

所在需要在目标端数据库的replicat进程限制触发器:

DDL INCLUDE OBJNAME "UserTest.*", &

EXCLUDE OBJNAME "TRIGGER",&

相关内容