存储 频道

征文:DB2 V9联机备份还原

创建示例数据库DB2TEST1 

模拟环境,首先我们在WINDOWS XP环境下安装DB2 ESE V9.1,安装完成后,打开DB2CLP窗口,发出CREATE DATABASE语句,创建示例数据库DB2TEST1,具体如清单1所示:

- - 清单1 .创建示例数据库DB2TEST1 C:\> DB2 CREATE DATABASE DB2TEST1 DB20000I CREATE DATABASE命令成功完成。

执行成功,这样我们就创建了一个示例数据库DB2TEST1,数据库地域是中国(CN),数据库代码页是1386,数据库代码集是GBK。由于数据库默认情况是采用循环日志方式,在循环日志方式下,不能进行联机备份,所以我们需要把日志方式改成归档模式。在DB2CLP窗口中,连接示例数据库DB2TEST1,执行UPDATE DB CFG命令把LOGARCHMETH1参数改成“DISK:C:\DB2\”,具体如清单2所示。

- - 清单2 .修改示例数据库DB2TEST1的配置参数 C:\> db2 connect to db2test1 数据库连接信息 数据库服务器 = DB2 / NT 9.1.0 SQL 授权标识 = RHETTE 本地数据库别名 = DB2TEST1 C:\> DB2 UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 DISK:C:\DB2\ IMMEDIATE

DB20000I UPDATE DATABASE CONFIGURATION命令成功完成。
SQL1363W 为立即修改而提交的一个或多个参数未动态更改。对于这些配置参数,
必须在所有应用程序都与此数据库断开连接之后,更改才会生效。 

执行成功,这样我们就把示例数据库DB2TEST1的日志模式改成了归档,并且归档方法使用手工归档的方法。如果是客户的生产环境使用了磁带机,当磁带管理软件是使用TSM的时候,由于TSM和DB2 V9进行了更深的结合,使用TSM进行日志的归档要比使用第三方厂商的产品效率要更高,管理更容易。如果归档日志是使用TSM放入到磁带机的话,可以直接修改LOGARCHMETH1参数,把其值修改成TSM,另外,在数据库配置参数中,提供了4个配置参数用来定义TSM的管理类等,分别是TSM管理类(TSM_MGMTCLASS)、TSM节点名(TSM_NODENAME)、TSM所有者(TSM_OWNER)和TSM密码(TSM_PASSWORD)。
 
TSM管理类(TSM_MGMTCLASS)配置参数是用来确定TSM服务器应如何管理正在备份的对象的备份版本。缺省缺省情况是没有DB2指定的管理类。当执行任何TSM备份时,在使用数据库配置参数指定的管理类之前,TSM 首先尝试将备份对象绑定到TSM客户机选项文件中的INCLUDE-EXCLUDE列表中指定的管理类。如果找不到匹配项,则将使用TSM服务器上指定的缺省TSM管理类。然后,TSM将备份对象重新绑定到数据库配置参数指定的管理类。因此,缺省管理类以及数据库配置参数指定的管理类必须包含备份副本组,否则备份操作将失败。
如果归档日志是使用TSM放入到磁带机的话,我们可以在DB2CLP窗口中,发出UPDATE DB CFG命令把配置参数LOGARCHMETH1参数改成TSM,具体如下:

C:\> DB2 UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 TSM IMMEDIATE
DB20000I UPDATE DATABASE CONFIGURATION命令成功完成。 


假如客户的生产环境使用了磁带机,但磁带管理软件使用了第三方的存储管理软件,比如EMC LEGATO,如果想用LEGATO进行日志备份,可以这么修改数据库参数:

$ db2 update db cfg using logarchmeth1 vendor:/usr/lib/libnsrdb2.o
$ db2 update db cfg using logarchopt1 @DB2.cfg 


在本文中,我们将使用手工归档的方式,所以我们执行了如清单2所示的命令,把LOGARCHMETH1改成了LOGRETAIN。 

建议大家使用LOGARCHMETH1,此参数指定已归档日志的主要目标的介质类型,不要继续使用LOGRETAIN或USEREXIT参数。LOGARCHMETH1参数缺省值为OFF,取值范围可以是LOGRETAIN、USEREXIT、DISK、TSM或VENDOR。各自的含义如下:

? OFF 
指定不使用日志归档方法。如果LOGARCHMETH1和LOGARCHMETH2都设置为 OFF,那么认为数据库正在使用循环日志记录,且不可前滚恢复。这是缺省值。

? LOGRETAIN
 
此值仅可用于LOGARCHMETH1,且等价于将 LOGRETAIN 配置参数设置为 RECOVERY。如果指定此值,将自动更新 LOGRETAIN 配置参数。

? USEREXIT 

此值仅对LOGARCHMETH1有效,且等价于将 USEREXIT配置参数设置为 ON。如果指定此值,将自动更新 USEREXIT配置参数。

? DISK 

此值后必须紧跟冒号(:),然后是现有标准路径名,日志文件将在其中归档。例如,如果将LOGARCHMETH1设置为 DISK:/u/dbuser/archived_logs,那么将归档日志文件放入名为 /u/dbuser/archived_logs的目录。

注: 如果正在归档至磁带,可以使用 db2tapemgr实用程序来存储和检索日志文件。

? TSM
如果指定不带任何附加配置参数,此值指示应该使用缺省管理类,将日志文件归档在本地 TSM 服务器上。如果此值后紧跟冒号(:)和 TSM 管理类,那么使用指定的管理类来归档日志文件。

? VENDOR 

指定将使用供应商库来归档日志文件。此值后必须紧跟冒号(:)和库的名称。库中提供的 API 必须使用备份并复原供应商产品的 API。 注: 如果将LOGARCHMETH1或LOGARCHMETH2设置为 OFF 以外的值,那么必须配置数据库以进行前滚恢复。 

    如果更新 USEREXIT 或 LOGRETAIN 配置参数,将自动更新LOGARCHMETH1,反之亦然。然而,如果您要使用USEREXIT或LOGRETAIN, 必须将LOGARCHMETH2设置为 OFF。 

清单2中的命令执行成功后,由于LOGARCHMETH1配置参数更改成功后,需要等数据库上所有的连接都断开后才会生效,所以我们在DB2CLP窗口中,发出FORCE APPLICATIONS ALL命令断开所有的连接,具体如清单3所示: 

 

- - 清单3 .断开所有应用程序连接 C:\> DB2 FORCE APPLICATIONS ALL

    成功后,用LIST APPLICATIONS看所有应用程序是否都断开了,如果没有断开,再重复执行FORCE APPLICATIONS ALL,保证所有连接都断开后,把数据库做一次全备。在我们首次把数据库的日志模式由循环模式改成归档模式后,数据库会处于BACKUP PENDING状态,强制我们进行一次全量备份,在全量备份完成之前,不能访问数据库或表空间。

    下面我们在DB2CLP窗口中,发出BACKUP DB命令,全量备份示例数据库DB2TEST1,具体如清单4所示:     

- - 清单4 .对示例数据库做一次全备
 
C:\> DB2 BACKUP DB DB2TEST1
备份成功。此备份映像的时间戳记是:20070928212852
 
 
完全备份成功后,这样我们就创建了一个测试库DB2TEST1,其使用归档日志,不允许增量备份。在DB2CLP窗口中,连接上示例数据库DB2TEST1,发出GET DB CFG命令查看其配置参数,可以看到LOGARCHMETH1配置参数已经被修改成功。具体如清单5所示:
 
- - 清单5.查看示例数据库配置参数
 
C:\> db2 connect to db2test1
 
   数据库连接信息
 
 数据库服务器         = DB2 / NT 9.1.0
 SQL 授权标识        = RHETTE
 本地数据库别名       = DB2TEST1
 
       数据库 的数据库配置
 
 数据库配置发行版级别                                    = 0x0b00
 数据库发行版级别                                        = 0x0b00
 
 数据库地域                                              = CN
 数据库代码页                                            = 1386
 数据库代码集                                            = GBK
 数据库国家/地区代码                                    = 86
 数据库整理顺序                                          = UNIQUE
 备用整理顺序                              ( ALT_COLLATE ) =
 数据库页大小                                            = 4096
 . . . . . . . . . . . . . . .
 日志文件大小(4KB                         ( LOGFILSIZ ) = 1024
 主日志文件的数目                           ( LOGPRIMARY ) = 13
 辅助日志文件的数目                          ( LOGSECOND ) = 4
 已更改的至日志文件的路径                   ( NEWLOGPATH ) =
 日志文件路径                     = C:\DB2\NODE0000\SQL00002\SQLOGDIR\
 溢出日志路径                          ( OVERFLOWLOGPATH ) =
 镜像日志路径                            ( MIRRORLOGPATH ) =
 首个活动日志文件                                        = S0000001.LOG
 磁盘上已满的块日志                    ( BLK_LOG_DSK_FUL ) = NO
 事务使用的最大主日志空间的百分比        MAX_LOG = 0
 1 个活动 UOW 的活动日志文件的数目   ( NUM_LOG_SPAN ) = 0
 
 组落实计数                           ( MINCOMMIT ) = 1
 软检查点前回收的日志文件的百分比      ( SOFTMAX ) = 520
 启用的恢复的日志保留                  ( LOGRETAIN ) = OFF
 启用的日志记录的用户出口              ( USEREXIT ) = OFF
 
 HADR 数据库角色                                          = STANDARD
 HADR 本地主机名                      ( HADR_LOCAL_HOST ) =
 HADR 本地服务名称                    ( HADR_LOCAL_SVC ) =
 HADR 远程主机名                      ( HADR_REMOTE_HOST ) =
 HADR 远程服务名称                    ( HADR_REMOTE_SVC ) =
 远程服务器的 HADR 实例名             ( HADR_REMOTE_INST ) =
 HADR 超时值                          ( HADR_TIMEOUT ) = 120
 HADR 日志写同步方式                ( HADR_SYNCMODE ) = NEARSYNC
 
 第一个日志归档方法                    ( LOGARCHMETH1 ) = DISK:C:\DB2\
 logarchmeth1 的选项                        ( LOGARCHOPT1 ) =
 第二个日志归档方法                        ( LOGARCHMETH2 ) = OFF
 logarchmeth2 的选项                        ( LOGARCHOPT2 ) =
 故障转移日志归档路径                     ( FAILARCHPATH ) =
 错误时重试日志归档次数                   ( NUMARCHRETRY ) = 5
 日志归档重试延迟(秒)                 ( ARCHRETRYDELAY ) = 20
 供应商选项                                  ( VENDOROPT ) =
 
 . . . . . . . . . . .
 
下面我们来创建一个示例表TEST1,表很简单,只有3个列,分别是编号(ID)、姓名(NAME)和备注(NOTE)。在DB2CLP窗口中,连接上示例数据库DB2TEST1,发出CREATE TABLE命令,创建示例表TEST1,创建成功后,插入两条记录,具体如清单6所示:
 
- - 清单6 .创建示例表TEST1
 
C:\> db2 connect to db2test1
 
   数据库连接信息
 
 数据库服务器         = DB2 / NT 9.1.0
 SQL 授权标识         = RHETTE
 本地数据库别名       = DB2TEST1
 
C:\> DB2 CREATE TABLE TEST1( ID INT , NAME VARCHAR ( 10 ) , NOTE VARCHAR ( 50 ) )
DB20000I SQL命令成功完成。
 
C:\> DB2 INSERT INTO TEST1 VALUES ( 1 , ' RHETTE ' , ' the first rows ' )
DB20000I SQL命令成功完成。
 
C:\> DB2 INSERT INTO TEST1 VALUES ( 2 , ' DANIEL ' , ' the second rows ' )
DB20000I SQL命令成功完成。
 
      
命令执行成功,这样我们就创建了示例表TEST1,表中有两条记录,下面我们来演示如何对示例数据库进行联机全量备份以及利用这个联机全量备份进行还原操作。
0
相关文章