近期遇到一个配置了DDL同步的OGG环境,在同步时,在备库上出现同步异常,报错Fatal error executing DDL replication: error [Error code [942], ORA-00942: 通过分析OGG的错误日志ggserr.log,可以发现在正常的DDL同步时,有个设置当前SCHEMA的操作,在同步出错时,OGG软件没有设置当前SCHEMA操作;此时使用OGGDBA用户执行DDL,因此报ORA-00942 表不存在。

后续进一步从MOS上查询,此问题较大可能是由于BUG引起的,如下文档与此问题相关:

OGG v11.2 extract writes incorrect session schema name in to the trails causing replicat to fail on DDL operations (ORA-00942: table or view does not exist ) (文档 ID 1484499.1) for DDL replication, Replicat Sets Session To different schema than original one in source (文档 ID 1270161.1)

相关报错与排查分析: 

1.从REPPER.rpt文件中可以发现,当前OGG版本信息如下:

$ cat REPPER.rpt
***********************************************************************Oracle GoldenGate Delivery for OracleVersion 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBOLinux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:48:07</span>

2.从ggserr.log文件中,可以发现,问题发生时的日志信息: ###正常的DDL同步在OGG备库应用时的信息:--列编辑情况下将无关的列输出删除了

2018-01-30 21:38:47 :  Setting current schema for DDL operation to [JS_PERSONAL_TSM].
2018-01-30 21:38:47 :  Executing DDL operation.
2018-01-30 21:38:47 :  DDL operation successful.
2018-01-30 21:38:47 :  Restoring current schema for DDL operation to [ogg].
===========>>>>>开始一次DDL同步
2018-01-30 21:38:47 :  DDL found, operation [ALTER TABLE "AAABBB" ADD CONSTRAINT "FK_BMK_ABCDE_3" FOREIGN KEY ("KEK_INDEX") REFERENCES "T_ABCDE" ("KMS_ABCDE_INDEX") ENABLE NOVALIDATE  (size 131)].
2018-01-30 21:38:47 :  DDL is of mapped scope, after mapping new operation [ALTER TABLE JS_PERSONAL_TSM."AAABBB" ADD CONSTRAINT "FK_BMK_ABCDE_3" FOREIGN KEY ("KEK_INDEX") REFERENCES "T_ABCDE" ("KMS_ABCDE_INDEX") ENABLE NOVALIDATE  (size 147)].
2018-01-30 21:38:47 :  DDL operation included [INCLUDE MAPPED], optype [ALTER], objtype [TABLE], objowner [JS_PERSONAL_TSM], objname [AAABBB].
2018-01-30 21:38:47 :  Setting current schema for DDL operation to [JS_PERSONAL_TSM].
2018-01-30 21:38:47 :  Executing DDL operation.
2018-01-30 21:38:47 :  DDL operation successful.
2018-01-30 21:38:47 :  Restoring current schema for DDL operation to [ogg].
===========>>>>>结束一次DDL同步
===========>>>>>开始一次DDL同步
2018-01-30 21:38:47 :  DDL found, operation [ALTER TABLE "AAABBB" ADD CONSTRAINT "FK_BMK_ABCDE_2" FOREIGN KEY ("MAC_WK_INDEX") REFERENCES "T_ABCDE" ("KMS_ABCDE_INDEX") ENABLE NOVALIDATE  (size 134)].
2018-01-30 21:38:47 :  DDL is of mapped scope, after mapping new operation [ALTER TABLE JS_PERSONAL_TSM."AAABBB" ADD CONSTRAINT "FK_BMK_ABCDE_2" FOREIGN KEY ("MAC_WK_INDEX") REFERENCES "T_ABCDE" ("KMS_ABCDE_INDEX") ENABLE NOVALIDATE  (size 150)].
2018-01-30 21:38:47 :  DDL operation included [INCLUDE MAPPED], optype [ALTER], objtype [TABLE], objowner [JS_PERSONAL_TSM], objname [AAABBB].
2018-01-30 21:38:47 :  Executing DDL operation.
2018-01-30 21:38:47 :  Fatal error executing DDL replication: error [Error code [942], ORA-00942: 琛ㄦ垨瑙嗗浘涓嶅瓨鍦SQL ALTER TABLE JS_PERSONAL_TSM."AAABBB" ADD CONSTRAINT "FK_BMK_ABCDE_2" FOREIGN KEY ("MAC_WK_INDEX") REFERENCES "T_ABCDE" ("KMS_ABCDE_INDEX") ENABLE NOVALIDATE  /* GOLDENGATE_DDL_REPLICATION */], due to explicit ABEND error handling and filter [include all (default)].
2018-01-30 21:38:47 :  PROCESS ABENDING.
===========>>>>>DDL同步报错后进程ABENDING

从以上正常的DDL同步日志信息可以发现,DDL同步时,在OGG备库上显示信息如下:

第1行日志:DDL found,具体的DDL操作语句是什么

第2行日志:DDL is of mapped scope, after mapping new operation*,即经过OGG备库的rep进程的配置文件中映射关系后的生成的语句 第3行日志:DDL operation included,即显示了DDL语句中包含了哪些操作哪些对象类型、OWNER等 第4行日志:Setting current schema for DDL operation to [JS_PERSONAL_TSM].,即设置当前的SCHEMA,用于后面执行DDL语句 第5行日志:Executing DDL operation.

第6行日志:DDL operation successful.

第7行日志:Restoring current schema for DDL operation to [ogg].将当前SCHEMA恢复为OGG同步用户。

###问题发生时的的DDL同步在OGG备库应用时的信息,少了第4步设置当前的SCHEMA,从而导致此时使用的是OGG用户,在执行DDL语句时出现了无法找到表的错误:[Error code [942], ORA-00942:

################################### 进一步的原因分析: 参考OGG数据同步时的日志信息,可以发现相对于DDL同步成功的日志信息,问题发生时OGG的DDL同步时少了一个Setting current schema for DDL operation的操作; 此时使用了不正常的操作SCHEMA,因此会出现执行DDL语句报表不存在-[Error code [942], ORA-00942。

#### 在源端的验证: --在源端OGG用户下查看GGS_MARKER表,按字段的OPTIME时间信息或MARKER_TEXT字段的文件信息(ALTER TABLE "AAABBB" ADD CONSTRAINT*), 找到发生问题的DDL语句,查看这个DDL捕获时是否就有问题。 select * from GGS_MARKER

ogg在DDL语句同步时出现[Error code [942], ORA-00942的分析相关推荐

  1. 安装DirectX SDK时出现Error Code:s1023 的解决方案

     安装DXSDK_Jun10时(下载地址:http://www.microsoft.com/en-us/download/confirmation.aspx?id=6812 ) 出现下图所示错误 ...

  2. Intel SGX运行时出现“Error code is 0x4001”的解决方法

    本文作者:邱朋飞 昨天在我的电脑上运行Intel SGX应用程序还是好好的,今天早上运行根据Intel提供的例子进行一些小修改后的程序时出现了0x4001错误,提示如下: Error code is ...

  3. [Error Code: 942, SQL State: 42000] ORA-00942: 表或视图不存在

    排除SQL错误的问题之后 在表的前面加上用户名即可 用户名:SHJD SQL:select t.Work_Date from PVOAS_OCR_FILE_RESULT t select t.Work ...

  4. goldengate ddl mysql_配置GoldenGate同步DDL语句(3)

    在配置GoldenGate同步DDL语句(2)中我们针对多种DDL语句在GoldenGate环境中的同步进行了测试,但在默认情况下replicat在复制DDL语句失败时不会在replicat repo ...

  5. Windows10 安装软件时提示“ the error code is 2503/2502”错误解决办法

    问题内容:Windows10 安装软件时提示" the error code is 2503/2502"错误代码 分析原因:由于安装.msi格式的软件时,无法使用管理员身份运行,导 ...

  6. 执行update和delete的SQL语句时,报错:Error Code: 1175. You are using safe update mode and you tried to update a

    执行SQL语句时,报错: 13:36:42 delete from users where username='lisi' Error Code: 1175. You are using safe u ...

  7. DBMS_METADATA包获得对象DDL语句

    DBMS_METADATA包获得对象DDL语句 如何利用系统包DBMS_METADATA包中的GET_DDL函数来获取对象的定义语句.下面是该函数的入参和出参: SQL> DESC DBMS_M ...

  8. ORACLE如何使用DBMS_METADATA.GET_DDL获取DDL语句

    DBMS_METADATA.GET_DDL包可以得到数据库的对象的ddl脚本.如下(SQLPLUS中执行): 1.得到一个表的ddl语句: SET SERVEROUTPUT ON SET LINESI ...

  9. mysql主从不同步怎么恢复_mysql主从不同步时,怎么恢复

    mysql主从不同步时,怎么恢复 Mysql的主从数据库没有同步 先上Master库: mysql>show processlist;   查看下进程是否Sleep太多.发现很正常. show  ...

最新文章

  1. 施一公:优秀博士如何养成(全文) 清华大学演讲
  2. 用神经网络测量训练集的半衰期
  3. Qt核心知识归类及相关资料
  4. 光子浏览器_烟台招聘信息烟台光子信息科技有限公司招聘(五险一金,餐补)...
  5. ux和ui_首先要做的— UX / UI案例研究
  6. C++中引用符的使用
  7. 移动端HTML5音频与视频问题及解决方案
  8. 【技术】UEFI基础服务:系统表
  9. FT232R国产替代GP232RLUSB2.0串口芯片
  10. cogs339 维修数列 ……
  11. 视频音频提取器推荐:快速提取视频中的音频!
  12. 郑州财经学院第54次全国计算机,郑州财经学院第二期教师博士班开班
  13. win7建立无线wifi热点的几个常见的问题
  14. iphone win7无法识别_电脑无法识别iphone、ipad的解决办法
  15. AI简史--从1308到2016
  16. (ISC)² 2021年会暨网络安全峰会
  17. Linux使用tc模拟网络延迟和丢包
  18. Django报错:ValueError: source code string cannot contain null bytes
  19. 服务器先raid还是先系统好,新的服务器是先装系统还是在做raid0
  20. 计算机等级考试出现文件无法打开,计算机等级考试一级:修复无法打开的WPS文件...

热门文章

  1. 罗永浩两年还债4个亿,我却被《真还传》圈粉
  2. 公众平台 python_微信公众平台SDK Python
  3. [16-8-1]每日总结
  4. 在proteus中的排阻的查找_PROTEUS中这个排阻怎么找到?
  5. 最小公倍数用c语言,如何用C语言求最小公倍数。。。
  6. 17个你必须牢记的Win7快捷键
  7. 3DTouch的简单使用
  8. 新计算机如何用光盘安装系统,win7如何用光盘装系统_使用光盘重装win7系统步骤...
  9. 传智播客软件测试学习视频汇总:
  10. JAVA音程_大三度和小三度