日期:2014-05-16  浏览次数:20487 次

OGG-01028:Object with object number 124750 is compressed. Table compression is not supported.

最近晚上通过 GoldenGate Director 发现,生产环境绝大多数数据库上的 extract 进程经常会自动 abended,过几分钟后又跟没事一样的正常重启。

分析 ggserr.log 发现:

2013-03-17 06:05:15  ERROR   OGG-01028  Oracle GoldenGate Capture for Oracle, ets_xx7.prm:  Object with object number 124750 is compressed. Table compression is not supported.
2013-03-17 06:05:15  INFO    OGG-00991  Oracle GoldenGate Capture for Oracle, ets_xx7.prm:  EXTRACT ETS_XX7 stopped normally.
2013-03-17 06:05:46  INFO    OGG-01735  Oracle GoldenGate Collector for Oracle:  Synchronizing ./dirdat/ly002536 to disk.
2013-03-17 06:05:46  INFO    OGG-01735  Oracle GoldenGate Collector for Oracle:  Synchronizing ./dirdat/ly002536 to disk.
2013-03-17 06:05:46  INFO    OGG-01670  Oracle GoldenGate Collector for Oracle:  Closing ./dirdat/ly002536.
2013-03-17 06:05:46  INFO    OGG-01669  Oracle GoldenGate Collector for Oracle:  Opening ./dirdat/ly002537 (byte -1, current EOF 0).
2013-03-17 06:08:58  INFO    OGG-00975  Oracle GoldenGate Manager for Oracle, mgr.prm:  EXTRACT ETS_XX7 starting.
2013-03-17 06:08:58  INFO    OGG-00965  Oracle GoldenGate Manager for Oracle, mgr.prm:  EXTRACT ETS_XX7 restarted automatically.
2013-03-17 06:08:58  INFO    OGG-00992  Oracle GoldenGate Capture for Oracle, ets_xx7.prm:  EXTRACT ETS_XX7 starting.
2013-03-17 06:08:58  INFO    OGG-03035  Oracle GoldenGate Capture for Oracle, ets_xx7.prm:  Operating system character set identified as ISO-8859-1. Locale: en_US, LC_ALL:.
2013-03-17 06:08:58  WARNING OGG-00254  Oracle GoldenGate Capture for Oracle, ets_xx7.prm:  CONVERTUCS2CLOBS is a deprecated parameter


更令人吃惊的是生产环境当中凡是extract 进程中 table 参数指定了 table 列表的均未报改错误,凡是指定了 schema_name.* 的全部报了该错误,而且频率还非常高

有些进程甚至每天都会报,而且时间点固定。我们的生产环境 GoldenGate 版本为 v11.2.1.0.1,数据库版本为 11.2.0.3.0,而且我们的所有数据库中几乎都不使用压缩表

一开始按照错误中的 object number 在数据库中反复查找,均未发现该对象,于是我们开始怀疑是否是数据库在具体的 schema 下生成了某些临时表对象,导致 extract

进程无法正常捕获挂起,当 mgr 尝试重启 extract 进程时这些临时对象已从数据库中删除,metalink 对于这一疑问给了明确答案:

Extract abends with the below error displaying only the object id in the error messege when the source db is Oracle 11gR2, although the source db doesnot have any compressed tables:

Eg: 2012-10-30 22:02:00 ERROR OGG-01028 Object with object number 169008 is compressed. Table compression is not supported.

When the error occurs, the extract process would not provide the object name as well to exclude it from replication.

Cause

This issue happens when the extract hits the table DBMS_TABCOMP_TEMP_UNCMP and DBMS_TABCOMBP_TEMP_CMP  when the source db is Oracle 11gR2.  Since these tables are created and dropped dynamically by Oracle, by the time we check the object ID reported in the error messege, the object ID is already gone.

Solution

 The idea is to exclude these tables from replication by doing the below:

tableexclude *.DBMS_TABCOMP_TEMP*

For the extract, to show the object names in question instead of object id, the fix will be from OGG v11.2.1.0.5

在 Oracle 11g R2 中,数据库生成的临时表 DBMS_TABCOMP_TEMP_UNCMP 和  DBMS_TABCOMBP_TEMP_CMP 导致了这一错误,要避免出现该错误,可以直接通过

tableexclude 参数在出库进程中排除这两张表。在OGG v11.2.1.0.5 中,出现该错误时,显示的不是 object number 而是 objec