1 OGG的状态信息REPLICAT ABENDED repjj 00:23:32 00:02:00 2 查看OGG报错信息: 2021-08-19 13:34:21 WARNING OGG-01154 SQL error 1400 mapping USER_A.G_TAB_A to USER_B.G_TAB_A ORA-01400: cannot insert NULL into ("USER_B"."DEL_G_TAB_A"."S_RESOURCEID") ORA-06512: at "USER_B.TRI_TAB_B", line 5 ORA-04088: error during execution of trigger 'USER_B.TRI_TAB_B' SQL DELETE FROM "USER_B"."G_TAB_A" WHERE "RE_ID"='711708'. 2021-08-19 13:34:21 WARNING OGG-01003 Repositioning to rba 93641635 in seqno 104110. Source Context : SourceModule : [er.errors] SourceID : [/scratch/pradshar/view_storage/pradshar_pse_15852019/oggcore/OpenSys/src/app /er/errors.cpp] SourceFunction : [take_rep_err_action] SourceLine : [623] ThreadBacktrace : [8] elements : [/goldengate/libgglog.so(CMessageContext::AddThreadContext()+0x1e) [0x7f0731cf971e]] : [/goldengate/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, ...) +0x2cc) [0x7f0731cf26bc]] : [/goldengate/libgglog.so(_MSG_ERR_MAP_TO_TANDEM_FAILED(CSourceContext*, ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> co nst&, ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const&, CMessageFactory:: MessageDisposition)+0x53) [0x7f0731cee581]] : [/goldengate/replicat(take_rep_err_action(short, int, char const*, extr_ptr_def*, __std_rec_hdr*, char*, file_def*, bool)+ 0xdac) [0x521a80]] : [/goldengate/replicat(process_extract_loop()+0x2388) [0x53ad18]] : [/goldengate/replicat(main+0x732) [0x54cbd2]] : [/lib64/libc.so.6(__libc_start_main+0xf5) [0x7f072c0cb3d5]] : [/goldengate/replicat(__gxx_personality_v0+0x31a) [0x4c0c6a]] 2021-08-19 13:34:21 ERROR OGG-01296 Error mapping from USER_A.G_TAB_A to USER_B.G_TAB_A. 3 根据生成的discard文件查看执行SQL绑定的变量值: Current time: 2021-08-19 13:40:33 Discarded record from action ABEND on error 1400 ORA-01400: cannot insert NULL into ("USER_B"."DEL_G_TAB_A"."S_RESOURCEID") ORA-06512: at "USER_B.TRI_TAB_B", line 5 ORA-04088: error during execution of trigger 'USER_B.TRI_TAB_B' SQL DELETE FROM "USER_B"."G_TAB_A" WHERE "RE_ID"='711708' Aborting transaction on ./dirdat/yx/ya beginning at seqno 104110 rba 93641635 error at seqno 104110 rba 93641635 Problem replicating USER_A.G_TAB_A to USER_B.G_TAB_A Mapping problem with delete record (target format)... * RE_ID = 711708 L_ID = 1110899 S_ID = 2200000327 RE_FLAG = 1 SOURCE_CHANGE_TIME = 2021-08-19 13:10:49 TARGET_WRITE_TIME = 2021-08-19 13:40:33 C_LINE_RESOURCEID = 358 LINE_RESOURCEID = 711708 C_S_RESOURCEID = 1590 S_RESOURCEID = 6122200000327 * Process Abending : 2021-08-19 13:40:33 4 查看表结构,G_TAB_A表不能为空的只有RE_ID列,且源端和目标端一致,根据discard文件,此列也是有值的。仔细观察报错信息,发现问题出现在ORA-04088上,是触发器的问题 SYS@source1 >desc USER_A.G_TAB_A Name Null? Type --------------- -------- ------------------- RE_ID NOT NULL NUMBER(16) L_ID NUMBER(16) S_ID NUMBER(16) RE_FLAG VARCHAR2(8) 目标端: SYS@target1 >desc USER_B.G_TAB_A Name Null? Type ------------------------ -------- -------------------- RE_ID NOT NULL NUMBER(16) L_ID NUMBER(16) S_ID NUMBER(16) RE_FLAG VARCHAR2(8 CHAR) SOURCE_CHANGE_TIME DATE TARGET_WRITE_TIME DATE SOURCE_CHANGE_TIME2 DATE TARGET_WRITE_TIME2 DATE C_LINE_RESOURCEID NUMBER(19) LINE_RESOURCEID NUMBER(19) C_S_RESOURCEID NUMBER(19) S_RESOURCEID NUMBER(19) 5 查看对应的触发器,发现状态为开启的,没有禁用,问题应该就发生在这里了。 SYS@target1 >select OWNER,TRIGGER_NAME,TRIGGER_TYPE,STATUS from dba_triggers a where a.owner in ('USER_B') and trigger_name='TRI_TAB_B' order by status; OWNER TRIGGER_NAME TRIGGER_TYPE STATUS ------------------------------ ------------------------------ ---------------- -------- USER_B TRI_TAB_B AFTER EACH ROW ENABLED 6 查看触发器的内容,发现主要的作用就是将G_TAB_A表删除的数据插入到del_G_TAB_A表,且G_TAB_A表中的 S_RESOURCEID 为可为空,但 del_G_TAB_A表d S_RESOURCEID 列为不可为空,故导致OGG进程再删除数据时,触发器报错导致的OGG进程异常。 set linesize 300 set pagesize 999 set long 99999 select dbms_metadata.get_ddl('TRIGGER','TRI_TAB_B','USER_B') from dual; DBMS_METADATA.GET_DDL('TRIGGER','TRI_TAB_B','USER_B') -------------------------------------------------------------------------------- CREATE OR REPLACE TRIGGER "USER_B"."TRI_TAB_B" --触发器名 After Delete On G_TAB_A For Each Row Declare -- LOCAL VARIABLES HERE Begin Insert Into del_G_TAB_A (S_RESOURCEID, line_resourceid, c_line_resourceid, c_S_RESOURCEID,RE_ID, L_ID, S_ID, RE_FLAG, source_change_time,target_write_time, source_change_time2, target_write_time2, del_time) Values (:old.S_RESOURCEID, :old.line_resourceid, :old.c_line_resourceid, :old.c_S_RESOURCEID,:old.RE_ID,:old.L_ID, :old.S_ID,:old.RE_FLAG, :old.source_change_time, :old.target_write_time, :old.source_change_time2, :old.target_write_time2, Sysdate); End TRI_TAB_B; 表结构SYS@target1 >desc "USER_B"."DEL_G_TAB_A" Name Null? Type ------------------------ -------- ------------------- S_RESOURCEID NOT NULL NUMBER(19) LINE_RESOURCEID NOT NULL NUMBER(19) C_LINE_RESOURCEID NUMBER(19) C_S_RESOURCEID NUMBER(19) RE_ID NOT NULL NUMBER(16) L_ID NUMBER(16) S_ID NUMBER(16) RE_FLAG VARCHAR2(8 CHAR) SOURCE_CHANGE_TIME DATE TARGET_WRITE_TIME DATE SOURCE_CHANGE_TIME2 DATE TARGET_WRITE_TIME2 DATE DEL_TIME DATE 7 禁用触发器,再次启动进程,OGG进程恢复正常。 使用如下语句生成禁用触发器的语句: SYS@target1 >SELECT 'alter trigger '||owner||'.'||trigger_name||' disable'||';' from dba_triggers where owner in ('USER_B') and trigger_name='TRI_TAB_B' and STATUS='ENABLED'; 'ALTERTRIGGER'||OWNER||'.'||TRIGGER_NAME||'DISABLE'||';' ------------------------------------------------------------ alter trigger USER_B.TRI_TAB_B disable; 执行禁用触发器的语句: SYS@target1 >alter trigger USER_B.TRI_TAB_B disable; Trigger altered. 启动OGG进程: GGSCI (yxjcptdb3) 7> start repjj Sending START request to MANAGER ... REPLICAT repjj starting OGG进程恢复正常。 GGSCI (yxjcptdb3) 25> info repjj REPLICAT repjj Last Started 2021-08-19 13:53 Status RUNNING Checkpoint Lag 00:00:08 (updated 00:00:00 ago) Log Read Checkpoint File ./dirdat/yx/ya104113 2021-08-19 14:27:03.000192 RBA 136283490
目标端未禁用触发器导致的ORA-04088和ORA-01400错误
来源:这里教程网
时间:2026-03-03 16:53:00
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 新媒体运营周报怎么写?这样做自媒体数据分析,老板一定夸你!
新媒体运营周报怎么写?这样做自媒体数据分析,老板一定夸你!
26-03-03 - rac环境中数据文件权限不对导致的ORA-600和数据库hang
rac环境中数据文件权限不对导致的ORA-600和数据库hang
26-03-03 - 自媒体运营报告怎么写?周报月报撰写方法
自媒体运营报告怎么写?周报月报撰写方法
26-03-03 - 新媒体运营数据分析工具有哪些?
新媒体运营数据分析工具有哪些?
26-03-03 - 【DATAGUARD】Oracle Dataguard体系架构详解
【DATAGUARD】Oracle Dataguard体系架构详解
26-03-03 - 新媒体运营数据分析必备工具,提升技能一定要学!
新媒体运营数据分析必备工具,提升技能一定要学!
26-03-03 - 家装行业为什么开发小程序?设计装修类小程序怎么做?
家装行业为什么开发小程序?设计装修类小程序怎么做?
26-03-03 - 【INDEX】Oracle分区索引技术详解
【INDEX】Oracle分区索引技术详解
26-03-03 - 某业务系统的监听每过10天左右,就异常终止一次TNS-12537
某业务系统的监听每过10天左右,就异常终止一次TNS-12537
26-03-03 - 云村,网易云音乐的扛把子?
云村,网易云音乐的扛把子?
26-03-03
