程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 使用DB2 Cloning Tool克隆主機DB2數據庫

使用DB2 Cloning Tool克隆主機DB2數據庫

編輯:DB2教程

對DB2數據庫進行數據復制的方法多種多樣,本文主要介紹了一種使用快速磁盤復制技術(例如,FlashCopy等)對DB2數據進行克隆的方案。通過使用DB2 Cloning Tool,最大程度簡化DB2數據庫克隆過程中DBA所需進行的操作。使整個流程更加自動化。

數據庫管理員(DBA),或者DB2開發測試人員都能夠從中獲益,了解如何通過DB2 cloning tool快速簡便的構建DB2測試環境。為應用程序的開發和測試提供有力的保障。

序言

主機平台上的 DB2 數據庫是性能優異,運行穩定,使用廣泛的數據庫解決方案。隨著存儲在主機 DB2 數據庫中的數據量的不斷增加,開發人員在測試新的基於主機 DB2 數據庫的應用系統時,經常需要花費大量的精力和時間來搭建一個合格的主機 DB2 測試環境。這個測試 DB2 系統的結構必須和生成 DB2 系統的結構一致,並且測試環境中必須包含有相當的數據量,這樣才能確保測試的准確性。

兩種數據克隆技術

一般而言,可以通過以下兩種方法來將數據導入用於測試的 DB2 系統。

1. 使用UNLOAD工具從生產DB2系統中卸載數據,然後使用LOAD工具裝入測試DB2環境。這個方法的優點在於,靈活,操作簡單。這個方法的主要問題在於所需的時間較長。

2. 使用 FlashCopy 等磁盤復制技術,通過卷對卷拷貝的方式,對 DB2 子系統進行快速復制。這個方法最大的優勢在於,速度快。其次,通過卷對卷的拷貝,我們能夠最大程度的保證測試 DB2 和生產 DB2 物理特性(數據在物理磁盤上的分布情況)的一致性。然而這個方法主要的問題在於,

◆DB2使用的都是VSAM數據集,卷對卷拷貝後,可能需要針對VSAM數據集新建VSAM cluster;

◆通常DB2所涉及到的VSAM數據集較多,用戶很難把這些VSAM數據集一一改名,因此新生成的 DB2 數據庫的名字只能保持和源 DB2 一致。

第二種方法無疑是非常有吸引力的,但是它的缺點也十分的棘手。針對這種情況,IBM DB2 Cloning Tool應運而生。它能夠幫助用戶借助 FlashCopy 等快速磁盤復制技術的威力,方便,快捷的克隆出所需的DB2數據庫。

DB2 Cloning Tool的典型使用場景

◆快速克隆生產系統DB2,使得用戶能夠並發的運行生產流程;

◆建立和生產系統完全等同的QA(Quality assurance)測試環境,使得性能測試的結果更有針對性;

◆在升級到DB2新版本之前,創建完整的子系統環境(克隆),用於在生產系統升級到新版本前測試新系統的升級和應用;

◆創建數據倉庫,使用戶能在不影響生產系統的情況下進行數據挖掘。

DB2 Cloning Tool的使用環境

圖 1. DB2 Cloning Tool的使用環境

使用DB2 Cloning Tool克隆主機DB2數據庫

說明:

1. 源系統和目標系統可以是同一個 MVS 系統。此時DB2 Cloning Tool可以幫助用戶修改目標卷的卷標,自動將其online後,修改目標卷上數據集的名稱。

2. DB2 Cloning Tool 支持多種快速磁盤復制技術和磁盤鏡像技術,包括IBM FlashCopy,IBM PPRC,EMC TimeFinder/Snap,EMC TimeFinder/Mirror等等。

DB2 Cloning Tool 客戶化

要使用DB2 Cloning Tool,必須在源環境和目標環境分別通過SMP/E 安裝 DB2 Cloning Tool 相關的程序庫。並根據要求對其進行相應的客戶化。下面是詳細的客戶化步驟:

生成 DB2 Cloning Tool 的運行參數 CKZINI:

通過運行作業DB2CT.V1R1.SCKZJCL(CKZIMRG)創建一個新的參數成員——SCKZINI。

清單1. DB2CT.V1R1.SCKZJCL 代碼

CKZINIMG JOB ,’INIMERGE’,CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
********************************************************************
* COPYRIGHT 2001 - 2006 MAINSTAR SOFTWARE CORPORATION *
* ALL RIGHTS RESERVED *
********************************************************************
* MERGE THE NEW INI (CKZINI#) WITH THE EXISTING ONE (CKZINI)
MERGE exec PGM=CKZ01MER
STEPLIB DD DISP=SHR,DSN=DB2CT.V1R1.SCKZLOAD
INI DD DISP=SHR,
DSN=DB2CT.V1R1.SCKZPARM(CKZINI#)
MSCINI DD DISP=SHR,
DSN=DB2CT.V1R1.SCKZPARM(CKZINI#)
update DD DISP=SHR,
DSN=DB2CT.V1R1.SCKZPARM(CKZINI)
SYSPRINT DD SYSOUT=*
SYSUDUMP DD SYSOUT=*
ABNLIGNR DD DUMMY DO NOT REMOVE IF USING ABENDAID

根據需要修改CKZINI參數:

建議新用戶使用默認CKZINI參數。如果多個系統間通過CAMIM/MII共享DASD, 那麼需要設置以下的參數。

清單 2. 多個系統間通過CAMIM/MII共享DASD需要設置的參數

:RESOURCE_SERIALIZATION

MIM_GDIF = YES

更新DB2CT.V1R1.SCKZJCL中的作業:

根據當前系統中DB2 Cloning Tool的HLQ和DB2的 SDSNLOAD數據集修改該作業庫中的 JCL。

將DB2 Cloning Tool的LOAD LIB:DB2CT.V1R1.SCKZLOAD添加到系統的APF中:

確保運行DB2 Cloning Tool的用戶擁有足夠的RACF權限:

◆執行COPY和rename命令,需要擁有源和目標user catalog的alter權限;

◆執行DB2update命令,需要擁有對目標數據集的update權限;

◆執行COPY 命令,需要使用ADRDSSU ADMIN參數的權限;

◆通過保護DB2 Cloning Tool的日志文件,可以避免未授權的用戶使用COPYCHECK命令。

使用DB2 Cloning Tool克隆DB2子系統

在實際使用DB2 Cloning Tool之前,我們需要對MVS系統以及 DB2 子系統做一些准備工作。針對MVS 系統環境的准備工作,主要是確保 MVS 系統可以順利調用相應的磁盤復制技術(例如,FlashCopy,SnapShot 等)。需要注意的是,使用磁盤復制技術時必須將COPYVILID參數設置為YES。以確保源卷上的 VVDS 會完整的復制到目標卷上,並保持一致的命名;否則會造成DB2 Cloning Tool在做 rename 操作時出現錯誤。

關於DB2環境的准備工作

源DB2子系統

1. DATA SET分布

為了保證克隆過程的正確和完整,源卷上必須包括所有源DB2子系統的direcory,catalog,active log,BSDS以及與所有用戶數據庫相關的 DATA SET。在克隆的過程中DB2的SDSNLOAD和SDSNEXIT 這兩個添加到APF中的DATA SET不要放在源卷上一並復制。與源DB2子系統有關的USER CATALOG可以放置在源卷上,也可以放置在其他目標環境能夠訪問的卷上。

2. 綁定與DB2克隆工具相關的Plan和Package

在源DB2子系統中bind相關的plan之後,在對目標DB2子系統進行操作的過程中就可以直接使用相應的DB2 Cloning Tool的工具去修改目標DB2子系統的信息,而不需要每次都重新bind。可參考JCL:DB2CT.V1R1.SCKZJCL(CKZDBIND)代碼示例。

清單 3. DB2CT.V1R1.SCKZJCL(CKZDBIND)代碼

DSN SYSTEM(DSN)
BIND PLAN(CKZPLAN)
PKLIST(CKZPACK.*)
ENCODING(EBCDIC)
DYNAMICRULES(RUN)
ACTION(REPLACE)
RETAIN
END
DSN SYSTEM(DSN)
BIND PACKAGE(CKZPACK)
MEMBER(CKZ00246)
VALIDATE(RUN)
RELEASE(COMMIT)
ENCODING(EBCDIC)
ISOLATION(CS)
DYNAMICRULES(RUN)
ACTION(REPLACE)
END

目標DB2子系統

1. 編譯有效的ZPARM和DSNHDECP參數

提交DB2安裝作業DSNTIJUZ,為目標系統DB2子系統定義正常啟動和運作所需的ZPARM參數和 DSNHDECP 參數。

2. 准備目標DB2子系統啟動時需要的STC proc

為了正常啟動目標DB2子系統,需要預先在對應的PROCLIB裡面定義好相關的啟動STC proc。

3. 定義目標DB2子系統和對應的IRLM的子系統

為了正常啟動目標DB2子系統,需要預先在對應的IEFSSNxx 裡面定義好DB2和IRLM啟動時需要使用的子系統借口(SSI)。

4. 為目標DB2子系統編譯一個特殊的ZPARM—DSNZSPEC

由於在克隆的過程中,我們需要修改目的DB2子系統的VCAT和STOGROUP,因此必須預先定義相應的 ZPARM。參考如下的步驟:

◆新建特殊的DSN6SPRC,將SDSNMACS(DSN6SPRC)復制到DB2CT.V1R1.SDSNMacS(DSN6SPRC)。

◆修改DB2CT.V1R1.SDSNMacS(DSN6SPRC)參數,將&SPRMCTU SETC ‘0’改成 &SPRMCTU SETC ‘1’。

◆創建編譯ZPARM的作業,將DSNTIJUZ復制到DB2CT.V1R1.SCKZJCL(DSNZSPEC),只保留 DSNZSPEC 裡面編譯ZPARM的部分。

◆修改新建的ZPARM作業:

·在DSNZSPEC裡面修改DSN6SPRM為DEFER, ALL;

·修改DSN6SPRM裡面的SYSADM和SYSADM2參數為以後運行DB2 Clone Tool的用戶ID;

·把DB2CT.V1R1.SDSNMacS(DSN6SPRC) 放在SYSLIB Dd 鏈接的最前面;指定生成的ZPARM參數module 名字為ZPRMSPEC,並編譯該ZPARM到SDSNEXIT庫裡面去。

根據復制過程中源DB2子系統的狀態,我們可以將DB2 Cloning Tool克隆DB2數據庫的方式分為DB2 offline克隆和DB2 online克隆兩種。DB2 offline克隆的過程相對簡單,但需要停止源DB2子系統。而采用DB2 online克隆的方式,源DB2子系統就無需進行停機和重啟的操作,提高了源DB2子系統的可用性。同時,這也會使克隆過程變得略微復雜。

DB2 offline克隆

步驟 1:在源MVS系統停止源DB2子系統

清單 4. 在源MVS系統停止源DB2子系統命令

DB2STOP

DB2-SSID(DSN)

步驟 2:在源MVS系統中使用磁盤復制技術對磁盤卷進行復制

步驟 3:在源MVS系統執行COPY命令

COPY命令會對和源卷有關的USER CATALOG進行備份,並對本來offline狀態的目標卷進行relabel 後重新online。

清單5. 在源MVS系統執行COPY命令

COPY
DATA-MOVER(
PGM(NONE)
)
VOLPAIRSDEVN(
M1DB17 P1D280 7600,
M1DB24 P1D28B 760B,
M1DB18 P1D281 7601,
M1DB21 P1D285 7605,
M1DB23 P1D283 7603,
M1DB33 P1D287 7607,
M1DB34 P1D288 7608,
M1DB35 P1D289 7609,
M1DB36 P1D28A 760A
)
USERCATALOGS(
CATU.DM10.CATALOG(M1DB17) CATU.DM30.CATALOG ,
CATU.DM10.SYSTEMA1(M1DB17) CATU.DM30.SYSTEMA1,
CATU.DM10.SYSTEMB1(M1DB17) CATU.DM30.SYSTEMB1,
CATU.SYSTEM.DB2 CATU.SYSTEM.DB2
CATWORK-DSN(DB2CT.V1R1.WRK.* )
JOURNAL-DDN(JOURNAL)

步驟4:在源MVS系統啟動源DB2子系統,之後源DB2子系統可正常使用

使用DB2START命令啟動源DB2子系統運行。

清單6.在源MVS系統啟動源DB2子系統命令

DB2START
DB2-SSID(DSN)
NORMAL

步驟 5:在目標MVS系統執行rename命令

rename命令能夠將目標卷上的DATA SET進行改名並重設CATALOG。

清單7.在目標MVS系統執行rename命令

rename
SAFE
VOLBKUP-DDN(VOLBKUP)
MAX-TASKS(5)
JOURNAL-DDN(JOURNAL)
RECATALOG(Y)
NOTrenameD(delete,RC(0))
STORCLAS-PAIRS(
SCSTAND,SCSTAND
)
rename-MASKS(
DSNDM10.** DSNDM30.**
DSNDM10A.DM11.** DSNDM30A.DM31.**
DSNDM10B.DM11.** DSNDM30B.DM31.**
CLODBTST.** TARDBTST.**
)

步驟 6:在目標MVS系統執行DB2update命令

使用DB2update命令對目標DB2子系統的directory和BSDS進行更新。

清單8. 在目標MVS系統執行DB2update命令

DB2update
DB2-HLQS(DSNDM10,DSNDM30
DSNDM10A,DSNDM30A
DSNDM10B,DSNDM30B
CLODBTST,TARDBTST)
STOGROUPS(CLODBSTG,TARDBSTG)
DB2-GROUP(DM10,DM30)
DB2-MEMBERS(DM11,DM31)
DB2-XCFCLEAN(Y)
JOURNAL-DDN(JOURNAL)

步驟 7:在目標MVS系統啟動目標DB2子系統

使用DB2START命令調用定制的ZPARM——ZPRMSPEC,啟動目標DB2子系統。

清單9.在目標MVS系統啟動目標DB2子系統

DB2START
DB2-SSID(DSN)
SPECIAL
DSNZPARM(ZPRMSPEC)

步驟 8:在目標DB2子系統執行DB2SQL命令

使用DB2SQL命令更新目標DB2子系統的catalog信息。

清單10. 在目標DB2子系統執行DB2SQL命令

DB2SQL
DB2-SSID(DSN)
LISTSQL(N)
JOURNAL-DDN(JOURNAL)

步驟 9:參考DB2安裝作業DSNTIJTM,在目標DB2子系統重新定義work databases

步驟10:停止目標DB2子系統的運行

由於當前目標DB2子系統使用特殊的ZPARM啟動,因此必須先停機然後使用正常的ZPARM啟動。

清單11.停止目標DB2子系統

DB2STOP

DB2-SSID(DSN)

步驟 11:重新啟動目標DB2子系統

使用DB2START命令啟動目標DB2子系統,至此目標DB2子系統已經可以正常的運行。

清單12.重新啟動目標DB2子系統

DB2START
DB2-SSID(DM31)
NORMAL

DB2 online 克隆

步驟 1:在源DB2子系統執行DB2SETLOG命令,掛起源DB2子系統

使用DB2STOP命令掛起源DB2子系統中的更新操作,並迫使緩沖池內已被更新的數據寫回到磁盤上以形成系統的一致點。

清單13.在源DB2子系統執行DB2SETLOG命令

DB2SETLOG
DB2-SSID(DSN)
SUSPEND

說明:

1) 如果是對DB2 V7進行SETLOG的操作,必須要求DB2 V7已經打過補丁PQ77456/UQ80188。

2) 建議用戶盡量在DB2子系統空閒的時候進行SETLOG SUSPEND操作。

步驟 2:在源MVS系統中使用磁盤復制技術對磁盤卷進行復制

步驟 3:在源MVS系統執行COPY命令

COPY命令會對和源卷有關的USER CATALOG進行備份,並對本來offline狀態的目標卷進行relabel後重新 online。

清單14.在源MVS系統執行COPY命令

COPY
DATAMOVER(
PGM(NONE)
)
VOLPAIRSDEVN(
M1DB17 P1D280 7600,
M1DB24 P1D28B 760B,
M1DB18 P1D281 7601,
M1DB21 P1D285 7605,
M1DB23 P1D283 7603,
M1DB33 P1D287 7607,
M1DB34 P1D288 7608,
M1DB35 P1D289 7609,
M1DB36 P1D28A 760A
)
USERCATALOGS(
CATU.DM10.CATALOG(M1DB17) CATU.DM30.CATALOG ,
CATU.DM10.SYSTEMA1(M1DB17) CATU.DM30.SYSTEMA1,
CATU.DM10.SYSTEMB1(M1DB17) CATU.DM30.SYSTEMB1,
CATU.SYSTEM.DB2 CATU.SYSTEM.DB2
)
CATWORK-DSN(DB2CT.V1R1.WRK.* )
JOURNAL-DDN(JOURNAL)

步驟 4:在源DB2子系統執行DB2SETLOG命令,恢復 DB2 中的更新操作

使用DB2SETLOG命令恢復源DB2子系統中的更新操作。

清單15. 在源DB2子系統執行DB2SETLOG命令

DB2SETLOG

DB2-SSID(DSN)

RESUME

步驟 5:在目標MVS系統執行rename命令

rename命令能夠將目標卷上的DATA SET進行改名並重新CATALOG。

清單16. 在目標MVS系統執行rename命令

rename
SAFE
VOLBKUP-DDN(VOLBKUP)
MAX-TASKS(5)
JOURNAL-DDN(JOURNAL)
RECATALOG(Y)
NOTrenameD(delete,RC(0))
STORCLAS-PAIRS(
SCSTAND,SCSTAND
)
rename-MASKS(
DSNDM10.** DSNDM30.**
DSNDM10A.DM11.** DSNDM30A.DM31.**
DSNDM10B.DM11.** DSNDM30B.DM31.**
CLODBTST.** TARDBTST.**
)

步驟 6:在目標MVS系統執行DB2update命令

使用DB2update命令對目標DB2子系的directory和BSDS進行更新。

清單17.在目標MVS系統執行DB2update命令

DB2update
DB2-HLQS(DSNDM10,DSNDM30
DSNDM10A,DSNDM30A
DSNDM10B,DSNDM30B
CLODBTST,TARDBTST)
STOGROUPS(CLODBSTG,TARDBSTG)
DB2-GROUP(DM10,DM30)
DB2-MEMBERS(DM11,DM31)
DB2-XCFCLEAN(Y)
JOURNAL-DDN(JOURNAL)

步驟7:在目標MVS環境啟動目標DB2子系統

使用DB2START命令調用定制的ZPARM——ZPRMSPEC,啟動目標DB2子系統。

清單18. 在目標MVS環境啟動目標DB2子系統

DB2START
DB2-SSID(DSN)
SPECIAL
DSNZPARM(ZPRMSPEC)

說明:

1) 啟動目標DB2子系統的時候,DB2會自動roll back處於inflight狀態的交易。請確保目標 DB2 子系統可以使用回退該交易所需的日志(活動日志或歸檔日志)。

步驟8:在目標DB2子系統執行DB2FIX命令

DB2FIX命令會糾正目標 DB2 子系統的catalog和directory中處於受限狀態的page spaces。

清單19.在目標DB2子系統執行DB2FIX命令

DB2FIX
DB2-SSID(DSN)
DATABASES(DB2)

說明:

1) 如果目標DB2是data sharing環境,執行DB2FIX時,只能啟動其中的一個member

步驟 9:在目標DB2子系統執行DB2SQL命令

使用DB2SQL命令更新目標DB2子系統的catalog信息。

清單20. 在目標DB2子系統執行DB2SQL命令

DB2SQL
DB2-SSID(DSN)
LISTSQL(N)
JOURNAL-DDN(JOURNAL)

步驟 10:在目標DB2子系統執行DB2FIX命令

DB2FIX命令會糾正目標DB2子系統的用戶數據庫中處於受限狀態的page spaces。

清單21.在目標DB2子系統執行DB2FIX命令

DB2FIX
DB2-SSID(DSN)
DATABASES(APPLICATION)

說明:

1) 如果目標DB2是data sharing環境,執行DB2FIX時,只能啟動其中的一個member

步驟 11:在目標DB2子系統重新定義work databases

參考DB2安裝作業DSNTIJTM,重新定義DM31的work databases。

步驟 12:在目標MVS系統停止目標DB2子系統的運行

由於當前目標DB2子系統使用特殊的ZPARM啟動,因此必須先停機然後使用正常的ZPARM啟動。命令示例如清單22所示。

清單22.在目標MVS系統停止目標DB2子系統

DB2STOP

DB2-SSID(DSN)

步驟13:在目標MVS系統啟動目標DB2子系統

使用DB2START命令啟動目標DB2子系統,至此目標DB2子系統已經可以正常的運行。

清單23. 在目標MVS系統啟動目標DB2子系統

DB2START

DB2-SSID(DSN)

NORMAL

總結

對DB2數據庫進行復制的方法多種多樣,本文主要針對使用快速磁盤復制技術(例如,FlashCopy 等)對DB2數據進行克隆的方案。通過使用DB2 Cloning Tool,能夠最大程度簡化DB2數據庫克隆過程中所需進行的操作。另外,通過TWS運行DB2 Cloning Tool提供的JCL作業,可以使整個克隆過程高度自動化,無需用戶干預,從而進一步加速整個復制過程。

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