OGG中add trandata的含義

llnnmc發表於2018-04-23

在配置OGG時,需要給同步的表新增補充日誌,在ggsci命令列執行
add trandata user.table

該命令實際上包含兩層含義:
1)table有PK或UK ,則目標端能準確依據PK或UK找到源端DML更新的資料,從而在目標端同步。
2)table沒有PK和UK,則目標端只能依據該table的所有列來找到源端DML更新的資料,從而在目標端同步。

對應此OGG命令,在SQL*PLUS中有等效語法:
1)和第一層含義等效的語法(有主鍵或唯一鍵)
alter table user.table add?supplemental log group ggs_table_1 (PK or UK) always;
2)和第二層含義等效的語法(沒有主鍵和唯一鍵)
alter table user.table add?supplemental log group ggs_table_1 (all column) always;

當某個table的column超過32個欄位的時候,使用add trandata就會報錯:
WARNING OGG-00706 Failed to add supplemental log group on table user.table due to ORA-02257: maximum number of columns exceeded ......
這個時候,就要使用:
alter table user.table add?supplemental log ...這種方式才可。
此時又分兩種情況:
第一情況是列超過32個,但有主鍵或唯一鍵:
alter table user.table add?supplemental log group ggs_table_1 (PK or UK) always;
第二情況是列超過32個,沒有主鍵和唯一鍵:
alter table user.table add?supplemental log group ggs_table_1 (all column <32) always;
alter table user.table add?supplemental log group ggs_table_2 (all colum >32) always;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28974745/viewspace-2153215/,如需轉載,請註明出處,否則將追究法律責任。

相關文章