一、问题概述
ogg链路正常同步进程,源端执行DDL操作(新增一张表),导致Replicat Abends :ERROR OGG-00519 Fatal error executing DDL replication: error [Error code[1435],ORA-01435:user does not exist],no eeror handler present.
复制进程Abends,DDL同步失败(参数中已支持DDL同步)

二、问题原因
核心原因:在源数据库上,将针对对象(例如位于不同schema中的约束)发出一些 DDL。比如DDL由不是表TABLE2 所有者的用户schema1对表shcema2.table2执行.
SQL > Show user
SCHEMA1
SQL> alter index SCHEMA2.SYS_C0025023 monitoring usage;
而ogg复制进程的参数配置:
replicat r_dor
userid ggs password ***
discardfile ./dirrpt/r_dor, purge, megabytes 100
DDL INCLUDE MAPPED
map SCHEMA2.* target SCHEMA2.*;
ogg的 REPLICAT 将运行 ALTER SESSION SET CURRENT_SCHEMA 更改为 SCHEMA1,后者针对表 SCHEMA2.TABLE2 发出 DDL。然后将运行映射表 SCHEMA2.TABLE2 的 DDL 以执行“更改索引 SCHEMA2.SYS_C0025023 监视使用情况;”,
如果用户 SCHEMA1 在产生错误的目标中不存在,则出现如上报错。无论如何都不能找到 SCHEMA1 执行 SET CURRENT_SCHEMA 命令,因为它只是用户执行命令,而 ALTER 命令应该针对 map 语句中的目标模式 SCHEMA2。
在上面的例子中,Goldengate 将尝试根据跟踪数据将目标模式更改为 SCHEMA1。ALTER SESSION SET CURRENT_SCHEMA="SCHEMA1" 因为这是在针对与 TABLE2 关联的系统对象发出 DDL 时schema处于活动状态的模式,该系统对象具有“alter index SCHEMA2.SYS_C0025023 monitoring usage;”
三、解决方案
添加复制进程的参数:
DDLERROR 1435 IGNORE INCLUDE OPTYPE ALTER OBJTYPE SESSION
如果不存在该用户则直接忽略相关的日志记录操作
四、参考文档
参考官方文档:MOS:Doc ID 1393463.1 和 Doc ID 1491646.1
Replicat Fails with ORA-01435 While Processing DDL Operation (Doc ID 1393463.1)
Replicat Abends with OGG-00519 Fatal Error Executing DDL Replication (Doc ID 1491646.1)




