紀錄OGG環境下重建table的流程

紀錄OGG環境下重建table的流程

某次在OGG環境source端重建table,重建後發現資料沒有sync到目的端,原來問題是出在supplemental log上;紀錄正確的流程,以一般table轉成partition table為例,大致步驟如下:

建立新table,名稱與舊table不同

sync資料到新table

add trandata in 新table

重啟extract process

交換新舊table name

進入ggsci,登入DB

GGSCI (andylab) > dblogin userid ogg password ogg

檢查舊TABLE TRANDATA狀態

GGSCI (andylab) > info trandata ANDY.OGG_TABLE

Logging of supplemental redo log data is enabled for table ANDY.OGG_TABLE.

Columns supplementally logged for table ANDY.OGG_TABLE: ID.

建立新TABLE,假設是partition table,細節省略

CREATE TABLE ANDY.OGG_TABLE_T

(

ID VARCHAR2(20 BYTE) NOT NULL,

MONTH VARCHAR2(2 BYTE),

DES VARCHAR2(40 BYTE)

)

TABLESPACE USERS

PARTITION BY RANGE (MONTH)

(PARTITION JAN VALUES LESS THAN ('02'))...

CREATE INDEX ANDY.OGG_TABLE_T_PK ON ANDY.OGG_TABLE_T...

ALTER TABLE ANDY.OGG_TABLE_T ADD (CONSTRAINT PK_ID PRIMARY KEY(ID)

USING INDEX ANDY.OGG_TABLE_T_PK ENABLE VALIDATE);

GRANT DELETE, INSERT, SELECT, UPDATE ON ANDY.OGG_TABLE_T TO USERB;

進行新舊TABLE的資料同步,這裡使用oracle提供的DBMS_REDEFINITION包

先檢查舊TABLE是否支援redefinition作業

EXEC DBMS_REDEFINITION.can_redef_table('ANDY', 'OGG_TABLE');

開始redefinition,這時候會把新table變成material view並同步資料

BEGIN

DBMS_REDEFINITION.start_redef_table(

uname => 'ANDY',

orig_table => 'OGG_TABLE',

int_table => 'OGG_TABLE_T');

END;

/

如果同步作業比較久,中途舊TABLE已有資料異動,可再SYNC差異

BEGIN

dbms_redefinition.sync_interim_table(

uname => 'ANDY',

orig_table => 'OGG_TABLE',

int_table => 'OGG_TABLE_T');

END;

/

在GGSCI為新TABLE增加supplemental data

GGSCI (andylab) > add trandata ANDY.OGG_TABLE_T

到此已準備好新舊TABLE且確保不再有資料異動,RENAME前必須先把OGG EXTRACT 程序重啟,否則先前在新TABLE加的supplemental log會無作用

GGSCI (andylab) > stop XANDY

GGSCI (andylab) > start XANDY

switch新舊TABLE名稱

BEGIN

dbms_redefinition.finish_redef_table(

uname => 'ANDY',

orig_table => 'OGG_TABLE',

int_table => 'OGG_TABLE_T');

END;

/

到此完成TABLE轉換,執行後續作業,譬如RENAME INDEX 、CONSTRAINT NAME,檢查等…。

如果目標TABLE沒有資料,可剩略步驟2與5,重點是supplemental log與知道重啟extract process的時機。

分享此文:

按一下即可分享至 X(在新視窗中開啟)

X

按一下以分享至 Facebook(在新視窗中開啟)

Facebook

喜歡 正在載入...

相关阅读