乌林珠
作者乌林珠·2012-05-13 13:31
数据库管理员·IBM

使用DB2 Cloning Tool克隆主机DB2数据库(一)

字数 6252阅读 539评论 0赞 0
【转载】

来源:互联网

==================================================================


对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 相关的程序库。并根据要求对其进行相应的客户化。下面是详细的客户化步骤:

生成 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)

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广