假設報表應用需讀取 SAMPLE 資料庫 DEPARTMENT 表的資料,為避免直接存取源表造成負擔,規劃將變更複寫至同機器(或已編目遠端)的 COPYDB 目標資料庫,供報表專用讀取。複寫拓樸為單向、同步間隔 1 分鐘,並示範行過濾(僅複寫 DEPTNO >= 'E00')與自訂目標表空間。
SAMPLE、目標資料庫 COPYDB(需預先建立)。SAMPLE 作為控制伺服器 → 下一步。TSASNCA、TSASNUOW(Bufferpool 設 IBMDEFAULTBP,Capture Schema ASN)。SAMPLE 出現在 Capture 控制伺服器清單。Capture 程式讀取歸檔日誌捕獲變更。預設為循環日誌,須改為歸檔模式:
db2 update db cfg for sample using logarchmeth1 "DISK:/archive_logs"
db2 backup db sample # 需完整備份後生效
SAMPLE → ASN Schema → 右鍵「註冊的表」→「註冊表」。DEPARTMENT → 確定。TSCDDEPARTMENT(Size 1 MB、Bufferpool IBMDEFAULTBP)。DEPARTMENT 顯示為已註冊。COPYDB → 選擇「應用已捕獲的對目標表的更改」 → 下一步。TSASNAA(Bufferpool IBMDEFAULTBP)。COPYDB 出現在 Apply 控制伺服器清單。COPYDB 下的「訂閱集」→「建立」。DEPTSUB、Apply Qualifier DEPTQUAL、Capture 控制伺服器 SAMPLE、目標伺服器 COPYDB、勾選「啟用訂閱集」。DEPARTMENT → 目標表名改為 TGDEPTCOPY → 「變更」進入屬性設定:DEPTNO 移入索引欄位並勾選「使用選擇的欄位建立主鍵」。DEPTNO >= 'E00'(僅複寫 3 筆資料)。TSTGDEPTCOPY(1 MB、Bufferpool IBMDEFAULTBP)。DELETE FROM ASN.IBMSNAP_APPLYTRAIL WHERE LASTRUN < (CURRENT TIMESTAMP - 7 DAYS),允許 SQLSTATE 02000(無資料刪除不報錯)。DEPTSUB 出現在訂閱集清單。cd <DB2安裝目錄>/sqllib/bin
asnpwd init using "path:/sqllib/repl/asnpwd.aut"
asnpwd add alias sample id <userid> password <pwd> using "path"
asnpwd add alias copydb id <userid> password <pwd> using "path"
# 終端機 1:啟動 Capture
asncap asncap_server=sample capture_schema=ASN startmode=cold
# 終端機 2:啟動 Apply
asnapply CONTROL_SERVER=copydb apply_qual=deptqual
"deptqual")。IBMSNAP_APPLYTRAIL 表追蹤 Apply 執行狀態。