程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2數據同步方面的經驗

DB2數據同步方面的經驗

編輯:DB2教程

規劃方案:

假定您將使用一個生成報告的應用程序。此應用程序需要存在於 SAMPLE 數據庫的 DEPARTMENT 表中的數據。您不想使用直接來自源表的數據,而想將更改復制到只能由生成報告的應用程序讀取的目標表中。為了便於管理,您要將目標表與源表保存在同一機器上。也可以是已編目導本地機器的網絡上的其它數據庫。

數據復制方案實施步驟:

開始之前

1. 首先確定在將要實施復制計劃的機器上已經安裝db2,已經建立實例。

2. 確定您將要用戶復制的源數據庫和目標數據庫,可以在同一台機器上,也可以是在網絡上的數據庫,需要編目到本地。

3. 確定您對源數據庫和目標數據庫有存取權限。假定源數據庫是sample庫,目標數據庫是copydb庫。

4. 在您的機器上建立copydb庫。

規劃此方案

1. 復制源

您已經知道了復制源就是 sample數據庫中的 schema .DEPARTMENT 表。在設置您的環境之前,必須決定想從該表中復制哪些內容;您決定注冊所有列並預訂所有列。

2. 復制目標

您決定想要復制目標是 copydb數據庫,該數據庫是在開始之前中創建的。目前,該數據庫中沒有任何目標表;您想讓復制中心根據您的規范來創建目標表。這種自動生成目標表的方法是優先可取的,原因是它可以確保正確映射至復制源。還可以使用現有的目標表,但是,本方案假定目標表不存在。

3. 復制選項

出於本方案的目的,您決定將 CD 表、目標表和復制控制表分別存儲在它們的缺省表空間中。盡管 SAMPLE 和 COPYDB 數據庫存在於同一機器上,但是,它們的表空間卻位於不同容器中。

為此方案規劃設置環境

步驟1:為Capture程序創建控制表

Capture 程序從復制控制表中讀取當前的注冊信息,並將它的狀態存儲在這些表中。將充當 Capture 控制服務器的任何數據庫都必須包含 Capture 控制表。

1. 打開復制中心,展開 SQL 復制 文件夾。

2. 展開 定義 文件夾。

3. 右鍵單擊 Capture 控制服務器 文件夾並選擇 創建 Capture 控制表 -> 快速 。或者,可通過選擇 創建 Capture 控制表 -> 定制 來定制 Capture 控制表。

4. 在“選擇服務器”窗口中,選擇 SAMPLE 數據庫。此數據庫將作為 Capture 控制服務器。單擊 確定 。

5. 在“創建控制表 - 快速 - 服務器信息”窗口中,選擇 主管用於復制和捕獲對那些源的更改的源 。然後,單擊 下一步 。

6. 在“創建控制表 - 快速 - 復制詳細信息”窗口中,單擊 下一步 。不需要更改此窗口中的任何信息。

7. 在“創建控制表 - 快速 - 表空間”窗口中,輸入 TSASNCA 表空間的表空間規范。例如,將緩沖池設置為 IBMDEFAULTBP。對於本方案,接受缺省 Capture 模式 - ASN。

8. 在“創建控制表 - 快速 - 表空間”窗口中,輸入 TSASNUOW 表空間的表空間規范。

9. 在“創建控制表 - 快速 - 表空間”窗口中輸入了這兩個表空間的信息之後,單擊 確定 。

10. 單擊“消息對話框”窗口上的 關閉 。此窗口顯示生成將創建 Capture 控制表的 SQL 腳本的結果。如果產生了任何錯誤,這些錯誤就會顯示在此窗口中。

11. 在“立即運行或保存 SQL”窗口中輸入有效的用戶標識和密碼,並單擊 確定 以立即運行 SQL 腳本。

12. 在“DB2 消息”窗口中應當看到一條消息指出已成功運行腳本。單擊 關閉 。

13. 展開 Capture 控制服務器 文件夾。SAMPLE 數據庫應當顯示在該文件夾中。

步驟2:為復制啟用數據庫

Capture 程序讀取 DB2 日志,以獲取包括對注冊的表的更改的日志記錄。日志必須是歸檔日志,以便在 Capture 程序可以讀取日志之前,DB2 將不會再使用日志文件。對於 UNIX(R) 和 Windows 環境,DB2 缺省值是循環日志記錄,因此,必須將此設置更改為歸檔日志記錄。

步驟3:注冊復制源

在創建了 Capture 控制表並為復制啟用了數據庫之後,將 DEPARTMENT 表注冊為復制源。

注冊步驟:

1.展開 SQL 復制 文件夾。

2.展開 定義 文件夾。

3.展開 Capture 控制服務器 文件夾。

4.展開 SAMPLE 數據庫。

5.展開 Capture 模式 文件夾。

6.展開 ASN 模式。

7.右鍵單擊 注冊的表 文件夾並選擇 注冊表 。

8.在“添加可注冊的表”窗口中,單擊 全部檢索 以列示 SAMPLE 數據庫中您可以注冊為復制源的所有表。選擇 DEPARTMENT 表並單擊 確定 。

9.在“注冊表”窗口中,單擊 CD 表 筆記本選項卡。指定有關 CD 表空間的下列信息:

o 在 表空間的規范 區域中,單擊 容器名 字段以指定 TSCDDEPARTMENT 表空間的容器名。

o 在 表空間的規范 區域中,將 大小 字段更改為 1。

o 在 表空間的規范 區域中,將 單位 字段更改為 MB。

o 指定此新表空間的其它信息;例如,將緩沖池設置為 IBMDEFAULTBP。

在輸入了表空間信息之後,單擊 確定 。

10.單擊“消息對話框”窗口上的 關閉 。 | 此窗口顯示生成將注冊源表的 SQL 腳本的結果 。如果產生了任何錯誤,這些錯誤就會顯示在此窗口中。

11.單擊“立即運行或保存 SQL”窗口上的 確定 以立即運行 SQL 腳本。

12.在“DB2 消息”窗口中應當看到一條消息指出已成功運行腳本。單擊 關閉 。

13.SAMPLE 數據庫文件夾的內容窗格中現在應當將 DEPARTMENT 表顯示為注冊的表。

步驟3:為Apply程序創建控制表

Apply 程序從復制控制表中讀取當前的預訂集信息,並將它的狀態存儲在這些表中。將充當 Apply 控制服務器的任何數據庫都必須包含 Apply 控制表。

1.展開 SQL 復制 文件夾。

2.展開 定義 文件夾。

3.右鍵單擊 Apply 控制服務器 文件夾並選擇 創建 Apply 控制表 -> 快速 。或者,可通過選擇 創建 Apply 控制表 -> 定制 來定制 Apply 控制表。

4.在“選擇服務器”窗口中,選擇 COPYDB 數據庫。此數據庫將作為 Apply 控制服務器。單擊 確定 。

5.在“創建控制表 - 快速 - 服務器信息”窗口中,選擇 應用已捕獲的對目標表的更改 。然後,單擊 下一步 。

6在“創建控制表 - 快速 - 復制詳細信息”窗口中,單擊 下一步 。不需要更改此窗口中的任何信息。

7.在“創建控制表 - 快速 - 表空間”窗口中,輸入 TSASNAA 表空間的表空間規范。例如,將緩沖池設置為 IBMDEFAULTBP。單擊 確定 。

8.單擊“消息對話框”窗口上的 關閉 。此窗口顯示生成將創建 Apply 控制表的 SQL 腳本的結果。如果產生了任何錯誤,這些錯誤就會顯示在此窗口中。

8.在“立即運行或保存 SQL”窗口中輸入有效的用戶標識和密碼,並單擊 確定 以立即運行 SQL 腳本。

9.在“DB2 消息”窗口中應當看到一條消息指出已成功運行腳本。單擊 關閉 。

10.展開 Apply 控制服務器 文件夾。COPYDB 數據庫應當顯示在該文件夾中。

步驟5:創建預訂集和預訂集成員

在注冊源表之後,需要創建預訂集。預訂集將定義復制源數據庫(在本方案中為 SAMPLE)與目標數據庫(在本方案中為 COPYDB)之間的關系。預訂集成員定義復制源表(在本方案中為 DEPARTMENT)與一個或多個目標表(本方案中只有一個目標表,它將稱為 DEPTCOPY)之間的關系。

制定預訂集和預訂集成員步驟:

1.展開 SQL 復制 文件夾。

2.展開 定義 文件夾。

3.展開 Apply 控制服務器 文件夾。

4.展開 COPYDB 數據庫。

A.右鍵單擊 預訂集 文件夾並選擇 創建 。

還可以通過選擇 SAMPLE 數據庫的 注冊的表 文件夾,右鍵單擊內容窗格中的 DEPARTMENT 表並選擇 創建預訂集 來創建預訂集。

B.在“創建預訂集”窗口的“集信息”頁中輸入以下信息:

a. 在 預訂集名稱 字段中輸入 DEPTSUB。此字符串標識預訂集,並且,對於特定的 Apply 限定符,此字符串必須是唯一的。

b. 在 Apply 限定符 字段中輸入 DEPTQUAL。此字符串標識對於將運行此預訂集的 Apply 程序的實例來說是唯一的復制定義。

技巧:

Apply 限定符是區分大小寫的。如果想要 Apply 限定符采用小寫字符,則當您輸入該限定符時必須對它進行定界;例如,"deptqual"。缺省情況下,如果您只是輸入 deptqual,則復制中心將把該值轉換為大寫字符。

c. 對 Capture 控制服務器別名 字段單擊浏覽按鈕。在“選擇 Capture 控制服務器”窗口中,選擇 SAMPLE 數據庫,並單擊 確定 。

d. 對 目標服務器別名 字段單擊浏覽按鈕。在“選擇目標服務器”窗口中,選擇 COPYDB 數據庫並單擊 確定 。COPYDB 數據庫既是目標服務器又是 Apply 控制服務器。

e. 選擇 激活預訂集 復選框。

7.在“創建預訂集”窗口的“源到目標映射”頁中輸入以下信息:

a.單擊 添加 以將已注冊的源添加至預訂集成員。

b.在“添加已注冊的源”窗口中,單擊 全部檢索 以顯示 SAMPLE 數據庫中的所有已注冊的源。

c.在“添加已注冊的源”窗口中,選擇 DEPARTMENT 表,並單擊 確定 。

d.在“創建預訂集”窗口的“源到目標映射”頁中,將目標表的名稱從 TGDEPARTMENT 更改為 TGDEPTCOPY:在預訂集成員表的 目標名 列中選擇 TGDEPARTMENT,並輸入TGDEPARTCOPY以覆蓋缺省名稱。

e.單擊 更改 以打開“成員屬性”窗口。從此窗口中,可以定義預訂集成員的屬性。

8.在“成員屬性”窗口的“目標表索引”頁中:

a. 從 目標中的可用列 列表中選擇 DEPTNO 列。

b. 單擊移動按鈕( > )來將 DEPTNO 列移至 在索引中使用的列 列表。

c. 選擇 使用選擇的列來創建主鍵 來將 DEPTNO 列用作目標表的主鍵。

9.在“成員屬性”窗口的“行過濾”頁中,在 WHERE 語句 字段中輸入以下子句:

DEPTNO >='E00'

此 WHERE 子句指示您只想復制滿足某些條件的那些行;在本例中,就是只復制部門號大於或等於“E00”的那些行。此 WHERE 子句將導致目標表只包含三行,而不是包含所有九行。

10.在“成員屬性”窗口的“目標表表空間”頁中,指定有關新的 TSTGDEPTCOPY 表空間的以下信息:

o 在 表空間的規范 區域中,單擊 容器名 字段以指定 TSTGDEPTCOPY 表空間的容器名。

o 在 表空間的規范 區域中,將 大小 字段更改為 1。

o 在 表空間的規范 區域中,將 單位 字段更改為 MB。

o 指定此新表空間的其它信息;例如,將緩沖池設置為 IBMDEFAULTBP。

還可以指定此新表空間的其它信息;例如,將緩沖池設置為 IBMDEFAULTBP。

11.單擊 確定 以關閉“成員屬性”窗口。對於此方案,不需要對 目標裝入選項 選項卡執行任何操作。

12.在“創建預訂集”窗口的“調度”頁中,將分鐘數更改為 1,以便 Apply 程序每隔一分鐘就要處理此預訂集一次。使用 復制頻率 區域中的 分鐘數 字段上的旋鈕來選擇 1 分鐘的時間間隔(或者在該字段中輸入 1)。

保留 起始日期 、 起始時間 、 基於時間 和 使用相對定時 的缺省值。

13.在“創建預訂集”窗口的“語句”頁中,單擊 添加 以打開“添加 SQL 語句或過程調用”窗口。使用此窗口來定義將在運行預訂集時處理的 SQL 語句。在“添加 SQL 語句或過程調用”窗口中輸入以下信息:

a.在 SQL 語句 字段中輸入:

DELETE FROM ASN.IBMSNAP_APPLYTRAIL WHERE LASTRUN

< (CURRENT TIMESTAMP - 7 DAYS)

此語句將刪除 Apply 跟蹤表中 7 天之前的任何記錄。

Apply 程序將執行在處理預訂集之後在目標服務器中添加的 SQL 語句。SQL 語句必須在目標服務器中運行,這是因為 Apply 控制服務器與目標服務器是駐留在同一位置的,並且 Apply 跟蹤表在 Apply 控制服務器中。

技巧:

Apply 程序運行您在每個預訂周期中添加至預訂集的 SQL 語句或過程。此示例效率比較低,這是因為 Apply 程序每一分鐘都將執行此語句,盡管該語句每 24 個小時最多只刪除 APPLYTRAIL 表中的數據一次。

b.在 SQLSTATE 字段中,輸入 02000,並單擊 添加 。此 SQL 狀態指示“找不到行”錯誤是可以接受的,並且 Apply 程序應當忽略這些錯誤。

技巧:

對於此預訂集,最多可以定義想要 Apply 程序忽略的十種 SQL 狀態。

c.單擊“確定”以關閉“添加 SQL 語句或過程調用”窗口。

14單擊 確定 以關閉“創建預訂集”窗口。

15.單擊“消息對話框”窗口上的 關閉 。此窗口顯示生成將更新 Apply 控制表並創建目標表的 SQL 腳本的結果。如果產生了任何錯誤,這些錯誤就會顯示在此窗口中。

16.單擊“立即運行或保存 SQL”窗口上的 確定 以立即運行 SQL 腳本。

可以將 SQL 腳本保存到一個文件中以供將來使用,也可以立即運行它:

a. 選擇 保存至文件 。

b. 在 保存規范 區域中填充一些信息,例如,文件名。

c. 單擊“應用”以保存該文件。如果腳本具有多個部分,而您未選擇 將多個腳本保存到一個文件中 復選框,則將使用您指定的名稱加上一個數字來將每一部分保存到一個獨立的文件中。“立即運行或保存 SQL”窗口將保持打開狀態。

d. 選擇 立即運行 。

e. 單擊 確定 以運行腳本,並關閉“立即運行或保存 SQL”窗口。

還可以將 SQL 腳本保存到一個文件中,以後再運行它,也可以保存 SQL 腳本並運行它。

17.在“DB2 消息”窗口中應當看到一條消息指出,同時在 SAMPLE 和 COPYDB 服務器上成功運行了腳本。單擊 關閉 。

18.展開 Apply 控制服務器 文件夾和 COPYDB 數據庫 ,然後單擊 預訂集 文件夾。 預訂集 文件夾的內容窗格現在應當顯示 DEPTSUB 預訂集。

步驟6:創建Apply程序密碼文件

因為 Apply 程序需要連接至 Capture 控制服務器、Apply 控制服務器和目標服務器,所以,必須創建一個密碼文件以進行用戶認證。因為密碼文件的內容已加密,所以,只有 Apply 程序可以讀取該文件,盡管您可以修改該文件。

創建密碼文件步驟:

1.打開操作系統的命令行窗口,然後進入db2的sqllibin目錄中,執行:

Asnpwd init using “path:/sqllib/repl/asnpwd.aut”

2. 輸入以下命令來為 Apply 程序必須連接至的每個數據庫添加用戶標識和密碼信息: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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved