首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 SQL 複寫實戰手冊:從規劃到啟動 Capture/Apply 的完整步驟

     編輯:DB2 教學

應用場景與規劃目標

假設報表應用需讀取 SAMPLE 資料庫 DEPARTMENT 表的資料,為避免直接存取源表造成負擔,規劃將變更複寫至同機器(或已編目遠端)的 COPYDB 目標資料庫,供報表專用讀取。複寫拓樸為單向、同步間隔 1 分鐘,並示範行過濾(僅複寫 DEPTNO >= 'E00')與自訂目標表空間。

前置條件確認

  1. 已安裝 DB2 並建立實例。
  2. 確認源資料庫 SAMPLE、目標資料庫 COPYDB(需預先建立)。
  3. 具備兩資料庫的存取權限。

複寫環境建置六大步驟

步驟 1:建立 Capture 控制表(於源端 SAMPLE)

  1. 開啟「複寫中心」→ 展開「SQL 複寫」→「定義」→ 右鍵「Capture 控制伺服器」→「建立 Capture 控制表 → 快速」。
  2. 選擇 SAMPLE 作為控制伺服器 → 下一步。
  3. 選擇「主管用於複寫和捕獲對那些源的更改的源」 → 下一步。
  4. 接受預設複寫細節 → 下一步。
  5. 指定表空間 TSASNCA、TSASNUOW(Bufferpool 設 IBMDEFAULTBP,Capture Schema ASN)。
  6. 確認執行 SQL 腳本,完成後 SAMPLE 出現在 Capture 控制伺服器清單。

步驟 2:啟用資料庫歸檔日誌(源端)

Capture 程式讀取歸檔日誌捕獲變更。預設為循環日誌,須改為歸檔模式:

db2 update db cfg for sample using logarchmeth1 "DISK:/archive_logs"
db2 backup db sample  # 需完整備份後生效

步驟 3:註冊複寫源表(DEPARTMENT)

  1. 複寫中心 → 「SQL 複寫」→「定義」→「Capture 控制伺服器」→ SAMPLE → ASN Schema → 右鍵「註冊的表」→「註冊表」。
  2. 「全部檢索」選取 DEPARTMENT → 確定。
  3. 「CD 表」分頁指定表空間 TSCDDEPARTMENT(Size 1 MB、Bufferpool IBMDEFAULTBP)。
  4. 執行生成的 SQL 腳本,完成後 DEPARTMENT 顯示為已註冊。

步驟 4:建立 Apply 控制表(於目標端 COPYDB)

  1. 右鍵「Apply 控制伺服器」→「建立 Apply 控制表 → 快速」。
  2. 選擇 COPYDB → 選擇「應用已捕獲的對目標表的更改」 → 下一步。
  3. 接受預設 → 指定表空間 TSASNAA(Bufferpool IBMDEFAULTBP)。
  4. 執行 SQL,COPYDB 出現在 Apply 控制伺服器清單。

步驟 5:建立訂閱集與訂閱集成員(核心映射)

  1. 右鍵 COPYDB 下的「訂閱集」→「建立」。
  2. 集合資訊:訂閱集名 DEPTSUB、Apply Qualifier DEPTQUAL、Capture 控制伺服器 SAMPLE、目標伺服器 COPYDB、勾選「啟用訂閱集」。
  3. 源到目標映射:新增已註冊源 DEPARTMENT → 目標表名改為 TGDEPTCOPY → 「變更」進入屬性設定:
  • 目標表索引:將 DEPTNO 移入索引欄位並勾選「使用選擇的欄位建立主鍵」。
  • 列過濾:WHERE 子句輸入 DEPTNO >= 'E00'(僅複寫 3 筆資料)。
  • 目標表表空間:建立 TSTGDEPTCOPY(1 MB、Bufferpool IBMDEFAULTBP)。
  1. 排程:複寫頻率設 1 分鐘。
  2. SQL 陳述式:新增 DELETE FROM ASN.IBMSNAP_APPLYTRAIL WHERE LASTRUN < (CURRENT TIMESTAMP - 7 DAYS),允許 SQLSTATE 02000(無資料刪除不報錯)。
  3. 執行生成 SQL(可存檔備份),完成後 DEPTSUB 出現在訂閱集清單。

步驟 6:建立 Apply 密碼檔(加密儲存認證)

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"

步驟 7:啟動 Capture 與 Apply 程式

# 終端機 1:啟動 Capture
asncap asncap_server=sample capture_schema=ASN startmode=cold

# 終端機 2:啟動 Apply
asnapply CONTROL_SERVER=copydb apply_qual=deptqual

關鍵操作提示

  • Apply Qualifier 區分大小寫,需小寫時請用雙引號括住(如 "deptqual")。
  • CD 表(Change Data 表)儲存捕獲的變更,每個源表對應一個 CD 表。
  • 訂閱集成員的「目標裝入選項」可控制初始載入方式(REPLACE/INSERT/UPDATE)。
  • 生產環境建議監控 IBMSNAP_APPLYTRAIL 表追蹤 Apply 執行狀態。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved