1 源端创建测试表 源端 OGGTEST@orcl>create table testnull (id number(8),id2 number(8)); Table created. 2 目标端创建测试表,并新增一列ID3,用于测试ORA-01400错误 目标端 OGGTEST@orcl>create table testnull (id number(8),id2 number(8)); Table created. alter table testnull add id3 number(12) not null; 3 测试数据是否同步OGG配置的参数如下: MAP oggtest.testnull, TARGET oggtest.testnull, COLMAP (USEDEFAULTS, id3=@STRCAT("612",ID2)); 源端: OGGTEST@orcl>insert into testnull values(1,0); 1 row created. OGGTEST@orcl>commit; Commit complete. 源端数据: OGGTEST@orcl>select * from testnull; ID ID2 ---------- ---------- 1 0 目标端: ID ID2 ID3 ---------- ---------- ---------- 1 0 61204 测试负值,OGG是否报错,发现报错,如下 测试负值: OGGTEST@orcl>insert into testnull values(1,-1); 1 row created. OGGTEST@orcl>commit; 目标端: GGSCI (oracle10g1) 31> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING REPLICAT ABENDED REPTB1 00:00:07 00:02:17 报错信息: 2021-09-15 10:07:49 WARNING OGG-01431 Aborted grouped transaction on 'OGGTEST.TESTNULL', Mapping error. 2021-09-15 10:07:49 WARNING OGG-01003 Repositioning to rba 1490 in seqno 16. 2021-09-15 10:07:49 WARNING OGG-01151 Error mapping from OGGTEST.TESTNULL to OGGTEST.TESTNULL. 2021-09-15 10:07:49 WARNING OGG-01003 Repositioning to rba 1490 in seqno 16. Source Context : SourceModule : [er.errors] SourceID : [/scratch/aime1/adestore/views/aime1_adc4150267/oggcore/OpenSys/src/app/er/errors.cpp] SourceFunction : [take_rep_err_action] SourceLine : [632] ThreadBacktrace : [12] elements : [/app/oracle/goldengate/libgglog.so(CMessageContext::AddThreadContext()+0x1e) [0x2aec4eb4e61e]] : [/app/oracle/goldengate/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, ...)+0x2ec) [0x2aec4eb4715c]] : [/app/oracle/goldengate/libgglog.so(_MSG_ERR_MAP_TO_TANDEM_FAILED(CSourceContext*, ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const &, ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const&, CMessageFactory::MessageDisposition)+0x53) [0x2aec4eb4312b]] : [/app/oracle/goldengate/replicat(take_rep_err_action(short, int, char const*, extr_ptr_def*, __std_rec_hdr*, char*, file_def*, bool)+0xa a7) [0x524c31]] : [/app/oracle/goldengate/replicat(process_extract_loop()+0x274c) [0x53e78c]] : [/app/oracle/goldengate/replicat(replicat_main(int, char**)+0x741) [0x551101]] : [/app/oracle/goldengate/replicat(ggs::gglib::MultiThreading::MainThread::ExecMain()+0x4f) [0x5ef7ff]] : [/app/oracle/goldengate/replicat(ggs::gglib::MultiThreading::Thread::RunThread(ggs::gglib::MultiThreading::Thread::ThreadArgs*)+0x104) [ 0x5efa54]] : [/app/oracle/goldengate/replicat(ggs::gglib::MultiThreading::MainThread::Run(int, char**)+0x8b) [0x5efb5b]] : [/app/oracle/goldengate/replicat(main+0x2c) [0x5502ac]] : [/lib64/libc.so.6(__libc_start_main+0xf4) [0x3c9561d994]] : [/app/oracle/goldengate/replicat(__gxx_personality_v0+0x31a) [0x4c266a]] 2021-09-15 10:07:49 ERROR OGG-01296 Error mapping from OGGTEST.TESTNULL to OGGTEST.TESTNULL. 目标端,发现插入负值,OGG报错,通过此事件可以说明,插入不合规的数据,OGG又可能会报错,且不知道如何处理: ID ID2 ID3 ---------- ---------- ---------- 1 0 6120 5 插入空值,测试ORA-1400错误,按照Oracle的理解:空值+任何值=空置,故会触发ORA-1400错误源端数据插入,未报错,正常。 OGGTEST@orcl>insert into testnull values(2,''); 1 row created. OGGTEST@orcl>commit; Commit complete. OGGTEST@orcl>select * from testnull; ID ID2 ---------- ---------- 1 0 1 -1 2 目标端: GGSCI (oracle10g1) 60> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING REPLICAT ABENDED REPTB1 00:00:06 00:00:47 报错信息: 2021-09-15 10:42:27 WARNING OGG-00869 OCI Error ORA-01400: cannot insert NULL into ("OGGTEST"."TESTNULL"."ID3") (status = 1400). INSERT /*+ RESTRICT_ALL_REF_CONS */ INTO "OGGTEST"."TESTNULL" ("ID","ID2","ID3") VALUES (:a0,:a1,:a2). 2021-09-15 10:42:27 WARNING OGG-01004 Aborted grouped transaction on 'OGGTEST.TESTNULL', Database error 1400 (OCI Error ORA-01400: cannot insert NULL into ("OGGTE ST"."TESTNULL"."ID3") (status = 1400). INSERT /*+ RESTRICT_ALL_REF_CONS */ INTO "OGGTEST"."TESTNULL" ("ID","ID2","ID3") VALUES (:a0,:a1,:a2)). 2021-09-15 10:42:27 WARNING OGG-01003 Repositioning to rba 1782 in seqno 16. 2021-09-15 10:42:27 WARNING OGG-01154 SQL error 1400 mapping OGGTEST.TESTNULL to OGGTEST.TESTNULL OCI Error ORA-01400: cannot insert NULL into ("OGGTEST"."TESTNUL L"."ID3") (status = 1400). INSERT /*+ RESTRICT_ALL_REF_CONS */ INTO "OGGTEST"."TESTNULL" ("ID","ID2","ID3") VALUES (:a0,:a1,:a2). 2021-09-15 10:42:27 WARNING OGG-01003 Repositioning to rba 1782 in seqno 16. Source Context : SourceModule : [er.errors] SourceID : [/scratch/aime1/adestore/views/aime1_adc4150267/oggcore/OpenSys/src/app/er/errors.cpp] SourceFunction : [take_rep_err_action] SourceLine : [632] ThreadBacktrace : [12] elements : [/app/oracle/goldengate/libgglog.so(CMessageContext::AddThreadContext()+0x1e) [0x2af68912b61e]] : [/app/oracle/goldengate/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, ...)+0x2ec) [0x2af68912415c]] : [/app/oracle/goldengate/libgglog.so(_MSG_ERR_MAP_TO_TANDEM_FAILED(CSourceContext*, ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const &, ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const&, CMessageFactory::MessageDisposition)+0x53) [0x2af68912012b]] : [/app/oracle/goldengate/replicat(take_rep_err_action(short, int, char const*, extr_ptr_def*, __std_rec_hdr*, char*, file_def*, bool)+0xa a7) [0x524c31]] : [/app/oracle/goldengate/replicat(process_extract_loop()+0x274c) [0x53e78c]] : [/app/oracle/goldengate/replicat(replicat_main(int, char**)+0x741) [0x551101]] : [/app/oracle/goldengate/replicat(ggs::gglib::MultiThreading::MainThread::ExecMain()+0x4f) [0x5ef7ff]] : [/app/oracle/goldengate/replicat(ggs::gglib::MultiThreading::Thread::RunThread(ggs::gglib:: MultiThreading::Thread::ThreadArgs*)+0x104) [ 0x5efa54]] : [/app/oracle/goldengate/replicat(ggs::gglib::MultiThreading::MainThread::Run(int, char**)+0x8b) [0x5efb5b]] : [/app/oracle/goldengate/replicat(main+0x2c) [0x5502ac]] : [/lib64/libc.so.6(__libc_start_main+0xf4) [0x3c9561d994]] : [/app/oracle/goldengate/replicat(__gxx_personality_v0+0x31a) [0x4c266a]] 2021-09-15 10:42:27 ERROR OGG-01296 Error mapping from OGGTEST.TESTNULL to OGGTEST.TESTNULL. 处理方法,修改OGG参数,使其可以进行判断,避免ID3列为空。 MAP oggtest.testnull, TARGET oggtest.testnull, COLMAP (USEDEFAULTS, id3 = @IF ( @COLTEST (ID 2,NULL),"612", @STRCAT("612",ID2))); 启动OGG进程,验证数据是否同步: GGSCI (oracle10g1) 70> start reptb1 Sending START request to MANAGER ... REPLICAT REPTB1 starting GGSCI (oracle10g1) 71> info reptb1 REPLICAT REPTB1 Last Started 2021-09-15 10:52 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:02 ago) Log Read Checkpoint File ./dirdat/pt000016 2021-09-15 10:42:21.000006 RBA 1929 OGGTEST@orcl>/ ID ID2 ID3 ---------- ---------- ---------- 1 0 6120 2 612 --发现OGG已经恢复正常。 原因分析:空值+任何值=空值,故在源端当某个列为空时,会导致连接字符串变为空值,最终触发ORA-1400错误
ORA-01400: cannot insert NULL into ("OGGTEST"."TESTNULL"."ID3")
来源:这里教程网
时间:2026-03-03 16:56:05
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 怎么给多个视频添加相同的滚动字幕内容呢
怎么给多个视频添加相同的滚动字幕内容呢
26-03-03 - 有什么简单快速获取天猫上商品详情图的方法吗?
有什么简单快速获取天猫上商品详情图的方法吗?
26-03-03 - 商家如何制作互动小游戏活跃气氛 吸引粉丝?
商家如何制作互动小游戏活跃气氛 吸引粉丝?
26-03-03 - kill session ORA-00031
kill session ORA-00031
26-03-03 - 农夫山泉挺赚钱
农夫山泉挺赚钱
26-03-03 - 中通财报:“增收不增利”怪圈难破
中通财报:“增收不增利”怪圈难破
26-03-03 - 【SQL】Oracle批量提交和频繁提交区别测试
【SQL】Oracle批量提交和频繁提交区别测试
26-03-03 - 唯品会的“成年烦心事”
唯品会的“成年烦心事”
26-03-03 - 21C在RHEL单节点图形化安装
21C在RHEL单节点图形化安装
26-03-03 - 高增长趋缓,金山云拉开了新战局帷幕
高增长趋缓,金山云拉开了新战局帷幕
26-03-03
