您的位置:首頁技術文章
文章詳情頁

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

瀏覽:58日期:2023-11-09 19:02:54

對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 的使用環境

說明:

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 相關的程序庫。并根據要求對其進行相應的客戶化。下面是詳細的客戶化步驟:

B<>生成 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 作業,可以使整個克隆過程高度自動化,無需用戶干預,從而進一步加速整個復制過程。

標簽: DB2 數據庫
国产综合久久一区二区三区