首页 > 数据库 > Oracle > OGG在插入数据时报ORA-01400
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进程,进程恢复正常
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69996316/viewspace-2786228/ ,如需转载,请注明出处,否则将追究法律责任。