1. 程式人生 > >表的重新再同步(無需時間窗口)

表的重新再同步(無需時間窗口)

gate 腳本 啟動 並且 文件 cti 初始 back 通過

表的重新再同步(無需時間窗口)

如果是某些表由於各種原因造成兩邊數據不一致,需要重新進行同步,但實際業務始終24小時可用,不能提供時間窗口,

則可以參照以下步驟。(因較為復雜,使用需謹慎!)

1)確認ext/dpe/rep進程均無較大延遲,否則等待追平再執行操作;

2)停止目標端的rep進程;

註意:步驟3-5為將源端數據通過exp/imp導入到目標端,客戶也可以選擇其它初始化方式,比如expdp/impdp。

3)在源端獲得當前的scn號。例如:

select to_char(current_scn) from v$database;

以下以獲得的scn號為1176681為例

4)在源端使用exp導出所需重新初始化的表或者幾張表數據,並且指定到剛才記下的scn號。例如:

exp <username>/<password> tables=ctais2.SB_ZSXX grants=n statistics=none triggers=n compress=n FLASHBACK_SCN=1176681

5)通過ftp傳輸到目標端;

6)在目標端,使用imp導入數據;

導入數據之前,先把目標端對應的表刪除

nohup imp goldengate/XXXXX file=nanhai.dmp fromuser=ctais2 touser=ctais2 ignore=y &

7)如果這些表有外鍵,在目標端檢查這些外鍵並禁止它們(記得維護dirsql下的禁止和啟用外鍵的腳本SQL);

8)編輯目標端對應的rep參數文件,在其map裏面加入一個過濾條件,只對這些重新初始化的表應用指定scn號之後的記錄

(一定要註意不要修改本次初始化之外的其它表,會造成數據丟失!):

map source.mytab, target target.mytab, filter ( @GETENV ("TRANSACTION", "CSN") > 1176681 ) ;

9)確認參數無誤後,啟動目標端的rep進程;

10)使用info repxx或者lag repxx直到該進程追上,停止該進程去掉filter即可進入正常復制。

表的重新再同步(無需時間窗口)