規劃情境
假設使用報表生成應用程式,需存取 SAMPLE 資料庫 DEPARTMENT 表資料。為避免直接存取來源表,決定將變更複寫至僅供報表應用讀取的目標表。為便於管理,目標表與來源表置於同一機器(或已編目至本地的網路資料庫)。
複寫方案實施步驟
前置準備
- 確認目標機器已安裝 DB2 並建立實例
- 確定來源與目標資料庫(可同機或網路資料庫,需編目至本地)
- 確認對來源與目標資料庫擁有存取權限(假設來源為 sample,目標為 copydb)
- 在本機建立 copydb 資料庫
方案規劃
1. 複寫來源
來源為 sample 資料庫中的 schema.DEPARTMENT 表。決定註冊所有欄位並預訂所有欄位。
2. 複寫目標
目標為 copydb 資料庫。目前無目標表,讓複寫中心依規範自動建立目標表(優先採用此法確保正確對應來源)。亦可使用現有目標表,本方案假設目標表不存在。
3. 複寫選項
CD 表、目標表與複寫控制表分別儲存於其預設表空間。雖 SAMPLE 與 COPYDB 同機,但表空間位於不同容器。
環境建置步驟
步驟 1:為 Capture 程式建立控制表
Capture 程式從複寫控制表讀取註冊資訊並儲存狀態。任何充當 Capture 控制伺服器的資料庫必須包含 Capture 控制表。
- 開啟複寫中心,展開「SQL 複寫」→「定義」資料夾
- 右鍵「Capture 控制伺服器」選擇「建立 Capture 控制表 → 快速」(或「定制」)
- 選擇 SAMPLE 資料庫作為 Capture 控制伺服器
- 選擇「主管用於複寫和捕獲對那些來源的更改的來源」
- 接受預設設定,指定 TSASNCA 與 TSASNUOW 表空間規格(緩衝池設為 IBMDEFAULTBP,Capture 模式 ASN)
- 執行生成的 SQL 腳本,確認成功訊息
步驟 2:為複寫啟用資料庫
Capture 程式讀取 DB2 日誌獲取註冊表變更記錄。日誌必須為歸檔日誌,UNIX/Windows 預設為循環日誌,需變更為歸檔日誌模式。
步驟 3:註冊複寫來源
- 展開「SQL 複寫」→「定義」→「Capture 控制伺服器」→ SAMPLE →「Capture 模式」→ ASN
- 右鍵「註冊的表」選擇「註冊表」
- 點擊「全部檢索」選擇 DEPARTMENT 表
- 在「CD 表」頁籤指定表空間規格:容器名 TSCDDEPARTMENT、大小 1 MB、緩衝池 IBMDEFAULTBP
- 執行 SQL 腳本確認成功
步驟 4:為 Apply 程式建立控制表
Apply 程式從複寫控制表讀取預訂集資訊並儲存狀態。任何充當 Apply 控制伺服器的資料庫必須包含 Apply 控制表。
- 右鍵「Apply 控制伺服器」選擇「建立 Apply 控制表 → 快速」
- 選擇 COPYDB 資料庫作為 Apply 控制伺服器
- 選擇「應用已捕獲的對目標表的更改」
- 指定 TSASNAA 表空間規格(緩衝池 IBMDEFAULTBP)
- 執行 SQL 腳本確認成功
步驟 5:建立預訂集與預訂集成員
預訂集定義來源(SAMPLE)與目標(COPYDB)資料庫關係;預訂集成員定義來源表(DEPARTMENT)與目標表(DEPTCOPY)關係。
- 右鍵「預訂集」選擇「建立」
- 輸入預訂集名稱 DEPTSUB、Apply 限定符 DEPTQUAL(區分大小寫)
- 指定 Capture 控制伺服器別名(SAMPLE)、目標伺服器別名(COPYDB)
- 勾選「啟用預訂集」
- 在「來源到目標對應」頁:添加 DEPARTMENT 表,將目標表名從 TGDEPARTMENT 改為 TGDEPTCOPY
- 在「成員屬性」→「目標表索引」:選擇 DEPTNO 為主鍵
- 在「列過濾」頁輸入 WHERE 子句:
DEPTNO >= 'E00'(僅複寫部門號 ≥ E00 的行)
- 在「目標表表空間」指定 TSTGDEPTCOPY 表空間規格
- 在「排程」頁設定每 1 分鐘處理一次
- 在「陳述式」頁添加 SQL:
DELETE FROM ASN.IBMSNAP_APPLYTRAIL WHERE LASTRUN < (CURRENT TIMESTAMP - 7 DAYS),SQLSTATE 設為 02000(忽略「找不到行」錯誤)
- 執行 SQL 腳本(可選擇儲存至檔案)確認成功
步驟 6:建立 Apply 程式密碼檔
Apply 程式需連接 Capture 控制伺服器、Apply 控制伺服器與目標伺服器,需建立加密密碼檔進行使用者認證。
# 進入 db2 sqllib/bin 目錄
Asnpwd init using "path:/sqllib/repl/asnpwd.aut"
Asnpwd add alias sample id userid password passWord using "path"
步驟 7:啟動 Capture 與 Apply 程式
Asncap asncap_server=sample capture_schema=ASN startmode=cold
Asnapply CONTROL_SERVER=copydb apply_qual=deptqual