經過本教程學習使用Replication Center,Capture和Apply程序。html
按照本教程的步驟來設置你的SQL Replication環境,將SQL Replication源的更改複製到DB2®for Windows Enterprise Server Edition(ESE)或Workgroup Server Edition(WSE)上的數據庫中的目標表,並監視 Capture和Apply程序的活動。sql
在開始教程前,須要安裝你的環境。數據庫
經過如下步驟完成環境的安裝:服務器
教程使用SAMPLE數據的DEPARTMENT表。全名是schema.DEPARTMENT;schema是你建立SAMPLE數據庫的用戶ID。app
對於剩下的教程,確保你使用的用戶ID是你建立SAMPLE和COPYDB數據的用戶。這個用戶ID有權限(DBADM或SYSADM)來使用replication task。ide
你想複製哪些數據,你須要設置哪些選項學習
假設你的組使用程序來產生報告。這個程序須要SAMPLE數據庫DEPARTMENT表種的數據。相對於從數據源表直接獲取數據, 你更但願程序能夠複製數據源表的修改到目標表, 而這些目標表只有報告產生程序能夠讀取。爲了便於管理, 你能夠把目標表和數據源表放到同一臺機器上。測試
您須要簡單的數據分發配置,包括將更改從一個複製源複製到單個只讀副本。 下一個主題描述在執行任何複製任務以前須要考慮的設計和規劃問題。ui
您能夠選擇複製選項,例如,肯定change-data(CD)表,目標表和控制表的存儲位置,複製發生的頻率以及哪些記錄(根據您指定的條件)您 想要在每一個複製週期後從IBMSNAP_APPLYTRAIL表中刪除。加密
爲了本教程學習的目的,請將CD表,目標表和控制表存儲在各自的默認表空間中,如表1所示。儘管SAMPLE和COPYDB數據庫存在於同一臺計算機中,但它們的表空間在不一樣的容器中。
表1. 表和表空間
| Database | Tables | Table spaces | Contents | | - | - | - | - | | SAMPLE | schema.DEPARTMENT | USERSPACE1 | Source table | || schema.CDDEPARTMENT | TSCDDEPARTMENT | The CD table for the DEPARTMENT table | || Capture control tables | TSASNCA and TSASNUOW | The control tables for the Capture program | | COPYDB | schema.TGDEPTCOPY | TSTGDEPTCOPY | Target table | || Apply control tables | TSASNAA | The control tables for the Apply program | || Monitor control tables | REPLMONTS1, REPLMONTS2, and REPLMONTS3 | The control tables for the Replication Alert Monitor |
一般,您能夠在與表空間(USERSPACE1)分離的表空間中建立CD表,以減小表空間級的潛在競爭。 爲此,請接受複製控制表的表空間的默認值(或在複製中心內定義配置文件)。 在生產環境中,請確保在單獨的設備上建立每一個表空間,以減小潛在的爭用。
對於本教程,計劃SQL Replication以每分鐘檢查源表中的任何更改,而後將更改複製到目標表。 雖然報表生成應用程序不須要這次檢查頻率,但對於本教程,您但願可以測試複製環境並驗證全部操做是否正常。
此外,您決定在每一個複製週期以後,要刪除IBMSNAP_APPLYTRAIL表中超過一週(七天)的記錄。 這種設置防止表增加太大。
複製源是數據庫中你須要複製到目標源的表。 在設置環境以前,您必須肯定須要從表中複製哪些內容。
此場景和教程的複製源是SAMPLE數據庫中的schema.DEPARTMENT表。 您決定register和subscribe全部列。
複製目標源是要從複製源複製數據到目標數據庫的表。 您能夠在目標數據庫中建立一個新表,或者使用現有的目標表。 對於本教程,您將建立一個新表。
複製目標源將是您建立的新數據庫COPYDB中的表。 目前,該數據庫中沒有目標表,您能夠根據您的實際需求決定是否建立目標表。 自動生成目標表的方式是首選,由於它能夠確保對複製源的正確映射。 您可使用現有的目標表,但本教程假定目標表不存在。
假設你想要的COPYDB的目標表的列如表1所是:
表1. COPYDB表的列
Column | Description
由於目標表中的列只是反映源表中的數據,而且由於源表中每行在目標表中只有一行,您可使用user copy類型的目標表。
在完成複製計劃以後,下一步就須要完成複製環境的設置
如下全部的步驟須要使用Replication Center, 經過下面步驟運行:開始菜單 > 全部程序 > IBM DB2 > DB2_copy > General Administration Tools > Replication Center. 或在DB2命令行使用db2rc啓動
配置複製環境第一步,建立Capture程序須要的control表
Capture程序讀取control表的註冊信息,而後將其狀態存儲在這些表中。 任何充當Capture控制服務器的數據庫都必須包含Capture control表。
建立Capture control表:
下一步是啓用源數據庫進行復制。 Capture程序讀取DB2®日誌,以記錄反映registered表更改的記錄。 日誌必須是archive log類型(而不是circular log類型),以免日誌在Capture程序能夠讀取以前被DB2覆蓋。
對於Linux,Unix和Windows環境,DB2默認使用circular日誌。使用如下步驟修改日誌類型爲archive日誌
啓用源數據庫進行復制:
在備份完數據庫後,你能夠啓動Capture程序。對於本教程還不須要啓動。
在建立Capture control表和啓用複製數據庫以後,你須要註冊你的數據庫的表做爲複製源。
使用如下步驟將SAMPLE數據庫中的DEPARTMENT表註冊爲複製源。 註冊表時,將自動建立名爲CDDEPARTMENT的change-data(CD)表,以從註冊的源表接收更改。 而後Apply程序從CD表中獲取更改
註冊一個表做爲複製源:
圖1.Register Tables窗口
圖2. DEPARTMENT表在註冊表列表中
DEPARTMENT表如今被定義爲複製源了。以前運行SQL腳本時,Replication Center已經爲這個複製源建立了CD表和CD表索引,以及更新Capture control表。
在爲Capture建立完control表後,你須要爲Apply程序也建立control表。
Apply程序爲subscription-set信息,讀取和保存狀態到這些control表。任何做爲Apply control server的數據庫都須要有Apply control表。
建立Apply contrl表:
在你註冊完數據源表後,你須要建立subscription set和subscription-set member來定義源數據庫到目標數據庫的關係已經複製源表和多個目標表的關係。
一個subscription set定義了複製源數據庫(SAMPLE)和目標數據庫(COPYDB)的關係。 一個subscription-set member定義了複製源表(DEPARTMENT)和多個目標表(DEPTCOPY)的關係。
建立subscription set和subscription-set member
展開SQL Replication目錄
展開Definitions目錄
展開Apply Control Servers目錄
展開COPYDB數據庫
右擊Subscription Sets目錄選擇Create
你也能夠經過選擇SAMPLE數據庫的Registered Tables目錄來建立subscription set。
在Create Subscription Set窗口設置如下信息:
在Create Subscription Set窗口的Source-to-Target Mapping標籤輸入如下信息:
聯邦數據提示:
若是你的公司的複製配置映射一個數據源表到一個存在的目標表且至少有一個表是來自非DB2數據庫,能夠查看Federated Systems Guide獲取更多信息,怎麼映射數據源列到存在的目標表的列。
Member Properties 窗口的一個例子如圖2.
圖2. Member Properties 窗口
在Member Properties窗口的Target-Table Index標籤:
在Member Properties窗口的Row Filter標籤,在WHERE statement框輸入:
DEPTNO >='E00'
這個where顯示哪些你想複製知足條件的行,只有哪些department number大於等於E00的行。選在目標表將保護8行而不是14行記錄
在Member Properties窗口的Target-Table Table Space標籤,爲新的TSTGDEPTCOPY表空間指定如下信息:
點擊OK關閉Member Properties窗口。本教材你還不須要對Target load options標籤作任何設置
在Create Subscription Set窗口的Schedule標籤,修改minutes爲1,Apply程序將每分鐘處理這個subscription set。保留Start date, Start time, Time-based, 和 Use relative timing爲默認值
在Create Subscription Set窗口的Statements標籤,點擊Add來打開Add SQL Statement or Procedure Call窗口。使用這個窗口來定義處理subscription set時運行的SQL。在Add SQL Statement or Procedure Call窗口輸入如下信息:
在SQL Statement框輸入:
DELETE FROM ASN.IBMSNAP_APPLYTRAIL WHERE LASTRUN < (CURRENT TIMESTAMP - 7 DAYS)
這個語句將刪除IBMSNAP_APPLYTRAIL表超過7天的數據
Apply程序在處理subscription set以後執行您在目標服務器上添加的SQL語句。 因爲Apply control server 和target server位於同一位置,而且IBMSNAP_APPLYTRAIL表位於Apply control server上,因此SQL語句必須在目標服務器上運行。
Tip Apply程序運行在每一個subscription週期中添加到subscription set的SQL語句或過程。 這個例子是無效的,由於Apply程序每分鐘都會執行這個語句,儘管這個語句只能從IBMSNAP_APPLYTRAIL表中刪除數據,最多每隔24小時刪除一次。 2. 設置SQLSTATE值爲02000點擊Add。這個SQL state標示」行找不到「錯誤,Apply程序會忽略這些錯誤。 Tip 你的Apply程序能夠爲subscription set設置10個SQL state 3. 點擊OK來關掉Add SQL Statement or Procedure Call窗口
點擊OK關閉Create Subscription Set窗口
在Messages and SQL Scripts窗口點擊Close。窗口將顯示更新Apply control tables 和 create the target table的SQL腳本。若是有錯誤也會在這個窗口顯示。
在Run Now or Save SQL窗口點擊OK來當即處理SQL腳本。或者,將SQL腳本保存到文件以備未來使用,如今也能夠運行它:
你會收到成功失敗的消息
點擊Close
展開COPYDB數據庫的Apply Control Servers目錄,點擊Subscription Sets目錄。Subscription Sets目錄的內容面板會顯示DEPTSUB subscription set。 如圖3
圖3. COPYDB數據庫列出DEPTSUB subscription set
由於Apply程序須要鏈接Capture control server,Apply control server和 the target server,你必須建立一個password file來爲用戶受權。由於password file的內容是加密的,儘管你能夠修改這個文件,但只有Apply程序能夠讀取這個文件。
建立Apply password file:
asnpwd init using "path"
path是你建立password file指定的完整目錄和文件名。你會看到信息ASN1981I,確保命令行成功運行。
例如,若是你想保存password file到c:\sqllib\repl目錄,文件名爲asnpwd.aut,輸入如下命令:
asnpwd init using "c:\sqllib\repl\asnpwd.aut"
c:\sqllib\repl\asnpwd.aut是password file的完整路徑和文件名
Tip
在您啓動Apply程序的目錄中建立密碼文件。 當您啓動Apply程序時,您能夠指定password file的文件名(使用PWDFILE關鍵字)以及Apply程序將存儲其日誌和工做文件(使用APPLY_PATH關鍵字)的目錄的值。 password file是Apply程序的工做文件之一。 3. 輸入如下命令爲每一個Apply程序須要鏈接的數據庫添加用戶ID和密碼信息:
asnpwd add alias SAMPLE id userid password password using "path"
userid須要擁有權限來更新Capture和Apply control表,password是這個用戶的密碼,path是你建立的password file的完整路徑。當你看到ASN1981I標示命令執行成功。