由于大量发生硬件或软件故障,数据库可能会变得不可用。自动数据库备份功能减轻了 DBA 的数据库备份管理任务,它始终会确保在需要时对数据库执行最新的完全备份,需要注意的是,自动备份是完全备份,不是增量备份或差异备份。
我们接下来对第 1 部分清单 1 中创建的示例数据库 DB2TEST1 启用自动备份功能,在 DB2CLP 窗口环境中 ,连接上示例数据库 DB2TEST1,通过发出 UPDATE DB CFG 命令修改自动数据库备份 (AUTO_DB_BACKUP) 参数,将其值置为 ON,具体如清单 1 所示:
清单 1. 修改示例数据库 DB2TEST1 参数
C:/ > db2 connect to db2test1
数据库连接信息
数据库服务器 = DB2 / NT 9.1 . 0
SQL 授权标识 = RHETTE
本地数据库别名 = DB2TEST1
C:/ > db2 update db cfg using AUTO_DB_BACKUP on
DB20000I UPDATE DATABASE CONFIGURATION命令成功完成。
命令执行成功后,我们再次查看示例数据库的配置参数,发现自动数据库备份( AUTO_DB_BACKUP )已经被修改成 ON 了,至此,我们打开了自动数据库备份功能(另一个重要开关 AUTO_MAINT 在创建数据库的时候已经默认打开了) 。注意,我们此时使用的是循环日志,LOGARCHMETH1 参数处于 OFF 状态,查看示例数据库参数的详细情况具体如清单 2 所示:
清单 2. 查看示例数据库 DB2TEST1 参数
C:/ > db2 get db cfg for db2test1
数据库 db2test1 的数据库配置
数据库配置发行版级别 = 0x0b00
数据库发行版级别 = 0x0b00
数据库地域 = CN
数据库代码页 = 1386
数据库代码集 = GBK
数据库国家/地区代码 = 86
数据库整理顺序 = UNIQUE
备用整理顺序 ( ALT_COLLATE ) =
数据库页大小 = 4096
. . . . . . . . . . . . . . . . . . . .
第一个日志归档方法 ( LOGARCHMETH1 ) = OFF
logarchmeth1 的选项 ( LOGARCHOPT1 ) =
第二个日志归档方法 ( LOGARCHMETH2 ) = OFF
logarchmeth2 的选项 ( LOGARCHOPT2 ) =
故障转移日志归档路径 ( FAILARCHPATH ) =
错误时重试日志归档次数 ( NUMARCHRETRY ) = 5
日志归档重试延迟(秒)( ARCHRETRYDELAY ) = 20
供应商选项 ( VENDOROPT ) =
. . . . . . . . . . . . . . . . . . . .
自动维护 ( AUTO_MAINT ) = ON
自动数据库备份 ( AUTO_DB_BACKUP ) = ON
自动表维护 ( AUTO_TBL_MAINT ) = ON
自动 runstats ( AUTO_RUNSTATS ) = ON
自动统计信息概要分析 ( AUTO_STATS_PROF ) = OFF
自动概要文件更新 ( AUTO_PROF_UPD ) = OFF
自动重组 ( AUTO_REORG ) = OFF
也可以使用图形化界面启用自动备份数据库功能,在控制中心在示例数据库DB2TEST1上右键单击,选择自动维护窗口, 打开,在第五个页面“选择要配置的维护活动”页面中对“备份数据库(BACKUP)”这条记录中的“自动化”列打上勾即可,具体界面如图6所示:
双击“备份数据库(BACKUP)”记录,或者选中这条记录并单击页面下面的“配置设置”按钮,就会打开“配置设置-备份数据库(BACKUP)”窗口, 在其第一个标签页“备份条件”中,可以指定用于确定此数据库上合适需要进行备份的条件,需要注意的是,如果数据库从未备份过,则一旦有机会就将执行备份。 可选的条件有:
- 优化数据库可恢复性(更频繁地备份):两次备份之间的最大时间间隔 1 天
- 平衡数据库可恢复性和性能:两次备份之间的最大时间间隔1周
- 优化数据库性能(不太频繁地备份):两次备份之间的最大时间间隔 1 个月
- 定制:时间需要自己选
具体界面如图 2 所示:
在“配置设置-备份数据库(BACKUP)”窗口,在其第二个标签页“备份位置”中,可以指定要存储备份映像的介质类型及其关联选择,注意,如果选择了备 份至磁盘,则自动备份功能部件将定期从“配置自动维护”向导中指定的目录中删除备份映像。只能保证在任何给定时间都可以提供最新的备份映像。建议将此目录 专用于自动备份功能部件,而不用来存储其他备份映像。具体界面如图8所示:
在“配置设置-备份数据库(BACKUP)”窗口,在其第三个标签页“备份方式”中,可以指定是想执行联机备份还是脱机备份,具体页面如图9所示:
图 4. 配置设置-备份数据库(BACKUP)窗口
循环日志方式下的配置自动维护窗口的其他页面和第一部分“创建数据库期间缺省启用自动收集统计信息功能”中所述差不多,不再累述。
下面我们来看一下示例数据库采用归档日志方式下配置自动备份的条件和循环日志方式下有什么不同的情况(我们接着上面所述进行,即自动数据库备份(AUTO_DB_BACKUP)参数已经被设置成ON),在DB2CLP窗口环境中,把LOGARCHMETH1参数设置成LOGRETAIN,具体如清单5所示。
清单 3. 更改数据库参数C:/ > db2 connect to db2test1
数据库连接信息
数据库服务器 = DB2 / NT 9.1 . 0
SQL 授权标识 = RHETTE
本地数据库别名 = DB2TEST1
C:/ > db2 UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 LOGRETAIN IMMEDIATE
DB20000I UPDATE DATABASE CONFIGURATION命令成功完成。
SQL1363W 为立即修改而提交的一个或多个参数未动态更改。对于这些配置参数,
必须在所有应用程序都与此数据库断开连接之后,更改才会生效。
建议大家使用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。
更改成功后,此时你执行如下清单 4 所示命令:
清单 4. 断开示例数据库 DB2TEST1 所有应用程序连接
C:/ > db2 force applications all
DB20000I FORCE APPLICATION命令成功完成。
DB21024I 该命令为异步的,可能不会立即生效。
命令成功后,用LIST APPLICATIONS看所有应用程序是否都断开了,如果没有断开,再重复执行FORCE APPLICATIONS ALL,保证断开后,把数据库做一次全备,具体如清单7所示。
清单 5. 备份数据库
C:/ > db2 backup db db2test1
备份成功。此备份映像的时间戳记是: 20070923163536
命令执行成功后,在DB2CLP窗口中连接上数据库,发出GET DB CFG命令,我们再次查看示例数据库的配置参数,发现第一个日志归档方法(LOGARCHMETH1)已经被修改成LOGRETAIN了,至此,我们启用了归档日志方式 。查看示例数据库参数的详细情况具体如清单8所示:
清单 6. 查看示例数据库 DB2TEST1 参数C:/ > db2 connect to db2test1
数据库连接信息
数据库服务器 = DB2 / NT 9.1 . 0
SQL 授权标识 = RHETTE
本地数据库别名 = DB2TEST1
C:/ > db2 get db cfg for db2test1
数据库 db2test1 的数据库配置
数据库配置发行版级别 = 0x0b00
数据库发行版级别 = 0x0b00
数据库地域 = CN
数据库代码页 = 1386
数据库代码集 = GBK
数据库国家/地区代码 = 86
数据库整理顺序 = UNIQUE
备用整理顺序 ( ALT_COLLATE ) =
数据库页大小 = 4096
. . . . . . . . . . . . . . . . . . . .
日志文件大小(4KB) ( LOGFILSIZ ) = 1024
主日志文件的数目 ( LOGPRIMARY ) = 13
辅助日志文件的数目 ( LOGSECOND ) = 4
已更改的至日志文件的路径 ( NEWLOGPATH ) =
日志文件路径 = C:/DB2/NODE0000/SQL00004/SQLOGDIR/
溢出日志路径 ( OVERFLOWLOGPATH ) =
镜像日志路径 ( IRRORLOGPATH ) =
首个活动日志文件 = S0000000. LOG
磁盘上已满的块日志 ( LK_LOG_DSK_FUL ) = NO
事务使用的最大主日志空间的百分比 ( AX_LOG ) = 0
1 个活动 UOW 的活动日志文件的数目 ( UM_LOG_SPAN ) = 0
组落实计数 ( INCOMMIT ) = 1
软检查点前回收的日志文件的百分比 ( OFTMAX ) = 520
启用的恢复的日志保留 ( LOGRETAIN ) = RECOVERY
启用的日志记录的用户出口 ( SEREXIT ) = OFF
. . . . . . . . . . . . . . . . . . . .
第一个日志归档方法 ( LGARCHMETH1 ) = LOGRETAIN
logarchmeth1 的选项 ( LOGARCHOPT1 ) =
第二个日志归档方法 ( LOGARCHMETH2 ) = OFF
logarchmeth2 的选项 ( LOGARCHOPT2 ) =
故障转移日志归档路径 ( FAILARCHPATH ) =
错误时重试日志归档次数 ( NUMARCHRETRY ) = 5
日志归档重试延迟(秒) ( ARCHRETRYDELAY ) = 20
供应商选项 ( VENDOROPT ) =
. . . . . . . . . . . . . . . . . . . .
自动维护 ( AUTO_MAINT ) = ON
自动数据库备份 ( AUTO_DB_BACKUP ) = ON
自动表维护 ( AUTO_TBL_MAINT ) = ON
自动 runstats ( AUTO_RUNSTATS ) = ON
自动统计信息概要分析 ( AUTO_STATS_PROF ) = OFF
自动概要文件更新 ( AUTO_PROF_UPD ) = OFF
自动重组 ( AUTO_REORG ) = OFF
此时我们在控制中心在示例数据库DB2TEST1上右键单击,选择自动维护窗口, 打开,在第五个页面“选择要配置的维护活动”页面中对“备份数据库(BACKUP)”这条记录中的“自动化”列打上勾即可,注意,另一个列“已使用的维护 窗口”默认值此时已经是“联机”,和我们使用循环日志的时候不一样,循环日志方式下此列的默认值是“脱机”,具体界面如图10所示:
接下来双击“备份数据库(BACKUP)”记录,或者选中这条记录并单击页面下面的“配置设置”按钮,就会打开“配置设置-备份数据库(BACKUP)” 窗口,在其第一个标签页“备份条件”中,可以指定用于确定此数据库上合适需要进行备份的条件,需要注意的是,如果数据库从未备份过,则一旦有机会就将执行 备份。其实,你已经发现了,归档日志方式下的自动维护窗口备份条件,多了两次备份之间已经使用的最大日志空间选项。可选的条件有:
- 优化数据库可恢复性(更频繁地备份):两次备份之间的最大时间间隔1天,备份之间使用的最大日志空间10MB
- 平衡数据库可恢复性和性能:两次备份之间的最大时间间隔1周,备份之间使用的最大日志空间25MB
- 优化数据库性能(不太频繁地备份):两次备份之间的最大时间间隔1个月,备份之间使用的最大日志空间50MB
- 定制:两次备份之间的最大时间间隔和备份之间使用的最大日志空间自己定制
具体界面如图11所示:
归档日志方式下的配置自动维护窗口的其他页面和上面所述的循环日志方式下差不多,不再累述。