【goldengate】表列数超过33个

近期在给一客户配置GoldenGate,在个表添加supplemental log时,即执行add trandata时,有大量的表报如下错误:

GGSCI (racdb1) 148> add trandata ▇▇▇▇▇▇▇▇▇▇

2013-07-10 10:24:55  WARNING OGG-00869  No unique key is defined for table ▇▇▇▇▇▇▇▇▇▇'. 
All viable columns will be used to represent the key, but may not guarantee uniqueness.  KEYCOLS may be used to define the key.

2013-07-10 10:24:55  WARNING OGG-01387  Table ▇▇▇▇▇▇▇▇▇▇ has no valid key columns, 
added unconditional supplemental log group for all table columns.

Logging of supplemental redo log data is already enabled for table ▇▇▇▇▇▇▇▇▇▇.


OGG-00869 是由于表不存在primary key或unique index所致,倒不会有太大影响。但OGG-01387错误引起了我的注意,不清楚其究竟,所以不敢忽略它,因此查询MOS得知,是因为该类的表的列的数量均超过了33列。

 

如果一张表,其列的数量超过33列(含),且没有primary key的话,则在执行add trandata命令时,会报OGG-01387错误,看提示说supplemental redo log data已经被启用,其实你查询 dba_log_group_columns可以得到验证。

 

实际情况是,这样的表存在200多个,确实挺恐怖的,有的表的列数高达200余个(不清楚这样的设计是不是存在缺陷?),于是我通过生成sql脚本的方式,给这些特殊的表启用supplemental redo log data。

 

举一个例子,如表 SCOTT.EMP存在超过33个列,且没有主键的话,那么手动添加supplemental redo log data的方法是:

alter table scott.emp add supplemental log group ggs_emp_1(col1,col2,...,col33) always;

add table scott.emp add supplemental log  group ggs_emp_2(col34,col35....) always;


额外提供一个验证表supplemental log添加是否成功的语句:

select owner,table_name
     from all_tables
    where owner in ('SCOTT')
      and table_name not in (select distinct table_name
                               from dba_log_group_columns
                              where owner in ('SCOTT'));


 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值