Add trandata后,执行info trandata仍然显示disabled

在OGG配置数据同步的过程中,其中的一个步骤是开启表级别的附加日志,也即执行add trandata …命令。在新版本中,建议使用add schematrandata命令代替。

 

今天,同事遇到一个奇怪的问题。执行 add trandata命令后,使用info trandata命令检查表级别的附加日志状态时,仍然显示为disabled状态。

 

找出原因后,如下测试是重现这个故障。

1、创建两张测试表(mmm和mmmm),他们的object_id分别为92081和92083。

SQL> create table mmm(id number primary key, name varchar2(200));

Table created

 

SQL> create table mmmm(id number primary key, name varchar2(200));

Table created

 

SQL> select owner, object_name, object_id, data_object_id

2 from dba_objects

3 where object_name in ('MMM', 'MMMM');

 

OWNER OBJECT_NAME OBJECT_ID DATA_OBJECT_ID

----------- ----------------- ---------- --------------

TEST MMM 92081 92081

TEST MMMM 92083 92083

 

SQL>

 

2、在数据库层面针对mmmm这张表添加表级别的附加日志,附加日志组名为GGS_92081。这个附加日志组名比较特殊,是以GGS_开头,后接mmm这张表的object_id。

SQL> ALTER TABLE test.mmmm ADD SUPPLEMENTAL LOG GROUP GGS_92081 (id) ALWAYS;

Table altered

 

SQL>

 

3、针对mmm这张表,在OGG层面添加表级别的附加日志。

GGSCI (ggdb01.oracle.com as c##ggate@ggdb/CDB$ROOT) 16> info trandata pdb1.test.mmm

Logging of supplemental redo log data is disabled for table PDB1.TEST.MMM.

 

GGSCI (ggdb01.oracle.com as c##ggate@ggdb/CDB$ROOT) 17>

 

GGSCI (ggdb01.oracle.com as c##ggate@ggdb/CDB$ROOT) 18> add trandata pdb1.test.mmm

2022-02-16 06:34:17 INFO OGG-15131 Logging of supplemental redo log data is already enabled for table PDB1.TEST.MMM.

2022-02-16 06:34:17 INFO OGG-15135 TRANDATA for instantiation CSN has been added on table PDB1.TEST.MMM.

GGSCI (ggdb01.oracle.com as c##ggate@ggdb/CDB$ROOT) 19>

 

GGSCI (ggdb01.oracle.com as c##ggate@ggdb/CDB$ROOT) 19> info trandata pdb1.test.mmm

Logging of supplemental redo log data is disabled for table PDB1.TEST.MMM.

 

GGSCI (ggdb01.oracle.com as c##ggate@ggdb/CDB$ROOT) 20>

可以看出,故障已经重现。第1次执行info trandata查看mmm这张表的表级别附加日志,显示为disabled状态,接着针对mmm这张表执行add trandata命令,它提示这张表的附加日志已经开启,再次执行info trandata命令时,仍然显示为disabled状态。

故障已经重现。

 

问题的原因是:在OGG层面添加表级别的附加日志时,实际上是在数据库层面执行alter table add supplemental log group命令,同时附加日志组的命名规则为GGS_<OBJECT_ID>,而mmm这张表的附加日志组名已经被mmmm这张表给占用了。所以mmm这张表执行add trandata命令时,会提示附加日志组已经存在,但info trandata时,却查不到附加日志组。

 

 

 

posted @ 2022-02-16 14:54  石云华  阅读(507)  评论(0编辑  收藏  举报