OGG在插入数据时报ORA-01400

来源:这里教程网 时间:2026-03-03 16:52:35 作者:

1 查看OGG的状态 REPLICAT    ABENDED     REPCJA10    01:33:01      00:00:08    2 查看报错信息,发现报ORA-1400,由于不能插入空值到非空的列。 2021-08-08 08:25:10  WARNING OGG-01154  SQL error 1400 mapping SOURCE.TB_A to TARGET.TB_A  OCI Error ORA-01400: cannot insert NULL into ("TARGET"."TB_A"."ID") (status = 1400).  INSERT INTO "TARGET"."TB_A" ("ID","COLUMN2","COLUMN3","COLUMN4","COLUMN5","COLUMN6","COLUMN7","COLUMN8")  VALUES (:a0,:a1,:a2,:a3,:a4,:a5,:a6,:a7,:a8,:a9).                                                                                                                                                                                                                                                           2021-08-08 08:25:10  WARNING OGG-01003  Repositioning to rba 95054448 in seqno 84900.                                                                                                                                                                                                                                                                                                             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) [0x7fc8cee4471e]]                                                                                                           : [/goldengate/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, ...)+0x2cc) [0x7fc8cee3d6bc]]                                                                           : [/goldengate/libgglog.so(_MSG_ERR_MAP_TO_TANDEM_FAILED(CSourceContext*, ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const&, ggs::gglib::ggapp::CQualDBObjName<(D BObjType)1> const&, CMessageFactory::MessageDisposition)+0x53) [0x7fc8cee39581]]                                                                                                                                           : [/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) [0x7fc8c92163d5]]                                                                                                                                    : [/goldengate/replicat(__gxx_personality_v0+0x31a) [0x4c0c6a]]                                                                                                                                                                                                                                                                                                         2021-08-08 08:25:10  ERROR   OGG-01296  Error mapping from SOURCE.TB_A to TARGET.TB_A.     3 查看表的定义,发现源端对应的列ID为可为空 目标端:  SYS@target3 >desc TARGET.TB_A                                                                                                                                                                                Name                          Null?    Type                      ----------------------------- -------- -----------------------   ID                            NOT NULL VARCHAR2(20 CHAR)         COLUMN2                                VARCHAR2(8 CHAR)          COLUMN3                                VARCHAR2(6 CHAR)          COLUMN4                                VARCHAR2(16 CHAR)         COLUMN5                       NOT NULL DATE                      COLUMN6                                NUMBER(16,2)              源端: SYS@source1 >desc SOURCE.TB_A                                                                                                                                                                    Name                      Null?    Type                  ------------------------- -------- --------------------  ID                                         VARCHAR2(20)          COLUMN2                            VARCHAR2(8)           COLUMN3                            VARCHAR2(6)           COLUMN4                            VARCHAR2(16)          COLUMN5                   NOT NULL DATE                  COLUMN6                            NUMBER(16,2)             4 查看表创建的索引,发现有主键索引  alter table SOURCE.TB_A add constraint PK_TB_A primary key (COLUMN7, COLUMN8, COLUMN5)  INDEX_OWNER        INDEX_NAME    TABLE_OWNER  TABLE_NAME    COLUMN_NAME       STATUS ------------------ ------------- -------------------------- ----------------- -------- SOURCE             PK_TB_A        SOURCE        TB_A        COLUMN5               N/A SOURCE             PK_TB_A        SOURCE        TB_A        COLUMN7               N/A SOURCE             PK_TB_A        SOURCE        TB_A        COLUMN8               N/A 5 根据报错信息,到源端查看对应的数据,发现源端对应的列的数据为空值,故认为可以将ID列更改为可为空。  Mapping problem with insert record (target format)...                                                                                     ID =                                                                                                   COLUMN2 = 01                             COLUMN3 = 61102                     COLUMN4 = 614015408                        COLUMN5 = 2021-08-06 00:00:00                 COLUMN6 = 3.73                                                 COLUMN8 = 3156253766                      COLUMN7 = 6130001001937044009851      SYS@source1 > select  a.id,a.COLUMN7,a.COLUMN8,a.COLUMN5 from SOURCE.TB_A a    2   where  a.COLUMN7 = '6130001001937044009851' and a.COLUMN8 = '3156253766' and a.COLUMN5 = to_date('2021-08-06 00:00:00','yyyy-mm-dd hh24:mi:ss'); ID                   COLUMN7                   COLUMN8          COLUMN5 -------------------- -------------------------------- ---------------- ------------                      6130001001937044009851           3156253766       06-AUG-21                       ID =  COLUMN2 = 01 COLUMN3 = 61102 COLUMN4 = 614015503 COLUMN5 = 2021-08-06 00:00:00 COLUMN6 = 6.02 COLUMN8 = 3891912490 COLUMN7 = 6130001021837016990412 select  a.id,a.COLUMN7,a.COLUMN8,a.COLUMN5 from SOURCE.TB_A a     where  a.COLUMN7 = '6130001021837016990412' and a.COLUMN8 = '3891912490' and a.COLUMN5 = to_date('2021-08-06 00:00:00','yyyy-mm-dd hh24:mi:ss');       ID                   COLUMN7                   COLUMN8          COLUMN5 -------------------- -------------------------------- ---------------- ------------                      6130001021837016990412           3891912490       06-AUG-21     ID =  COLUMN2 = 01 COLUMN3 = 61102 COLUMN4 = 614024617 COLUMN5 = 2021-08-06 00:00:00 COLUMN6 = 12.58 COLUMN8 = 3914018563 COLUMN7 = 6130001001937022530278  select  a.id,a.COLUMN7,a.COLUMN8,a.COLUMN5 from SOURCE.TB_A a     where  a.COLUMN7 = '6130001001937022530278' and a.COLUMN8 = '3914018563' and a.COLUMN5 = to_date('2021-08-06 00:00:00','yyyy-mm-dd hh24:mi:ss');        ID                   COLUMN7                   COLUMN8          COLUMN5 -------------------- -------------------------------- ---------------- ------------                      6130001001937022530278           3914018563       06-AUG-21 5 修改表的ID列为可为空  alter table TARGET.TB_A modify id null;        6 启动OGG进程,进程恢复正常                                 

相关推荐