环境:
产品:IBM 通用数据库
平台:跨平台
版本:v7,v8
一. 关于 db2ckbkp 实用程序
DB2 UDB 提供的 db2ckbkp 实用程序是用于对 backup 命令所产生的备份映象进行检测的,其功能主要有:
l 检测备份映象的完整性。
1. 在使用 backup 命令备份数据库结束后,检测所产生的映象文件是否正确,以便保存为日后恢复数据库所用。
2. 在使用 restore 命令恢复数据库之前,先利用 db2ckbkp 对即将被恢复的映象文件进行检测,以确认备份映象有效,确保对其进行的 restore 可成功完成。 l 从备份映象中抽取其数据库中的相关信息,例如当选用 db2ckbkp 实用程序所提供的相应参数,可提取备份影响中有关数据库名称及别名,备份的时间戳,所属实例,所用代码集,所用表空间的等各种信息。
二. 由多个文件组成的备份映象
此外,要想正确使用 db2ckbkp 实用程序,还应该了解一下在什么情况下 DB2 的备份映象会由多个文件组成。
1.备份操作中指定了多个放置备份映象的目标路径: 如果用户在发出 backup 命令时指定了多个放置备份映象的目标路径,DB2 会分别在每个路径下产生一个或多个映象文件,并依次以 .001,.002.,003厎 作为文件的扩展名。
例如下面一个在 Windows 平台下备份的例子:
例一.
db2 backup db sample to c:/tmp, d:/tmp
执行后分别检查两个路径可以看到:
C:/TMP/SAMPLE.0/DB2/NODE0000/CATN0000/20030914 的目录
2003-09-14 12:22 <DIR> .
2003-09-14 12:22 <DIR> ..
2003-09-14 12:22 8,392,704 122231.001
1 个文件 8,392,704 字节
E:/tmp/SAMPLE.0/DB2/NODE0000/CATN0000/20030914 的目录
2003-09-14 12:22 <DIR> .
2003-09-14 12:22 <DIR> ..
2003-09-14 12:22 4,227,072 122231.002
1 个文件 4,227,072 字节
即 SAMPLE 数据库的备份映象是分别由两个文件组成,C盘下的文件以 .001 作为扩展名,D 盘下的以 .002 作为扩展名。
2.单个备份映象的大小超过操作系统对文件大小的限制:
不同的操作系统对于文件的大小都可能有一个限制值,例如对于使用 FAT32 文件系统格式的操作系统,其文件最大不能超过 4GB;对于使用 JFS 文件系统格式的 AIX 系统,缺省情况下是没有激活大文件系统支持功能的,其文件最大不能超过 1GB。DB2 作为在操作下运行的应用程序之一,其备份映象文件的大小也同样受到操作系统的限制,因此当组成备份映象的文件的大小超过系统对文件大小的限制值时,DB2 会遵从系统的限制,生成多个文件,并依次以 .001,.002.,003厎 作为文件的扩展名。下面以一个 AIX 平台进行的备份操作为例加以说明:
例二.
$ db2 backup db sample
SQL2059W A device full warning was encountered on device "/home/db2inst1".
-
- Do you want to continue(c), terminate this device only(d), abort the utility(t)
? (c/d/t) C
SQL2059W 的信息是指在设备“/home/db2inst1”上遇到设备满的警告,导致这一警告的真正原因是由于一个备份映象文件的大小超过了系统缺省情况下对文件 1GB 大小的限制,此时 DB2 将等待用户选择是否要继续该操作,如果继续,DB2 会保存当前已满的文件,并打开一个新的文件,继续将备份数据写到新文件中;否则备份操作将被停止。如果用户选择继续,直至备份成功完成,用户会看到如下信 息:
Backup successful. The timestamp for this backup image is : 20030908153609
此时检测放置备份映象的路径,会看到产生了两个分别以 .001 和 .002 为扩展名的文件,其中第一个文件的大小为 1GB(系统文件大小的限制):
[test5l:/home/db2inst1]ls -l SAMPLE*
-
-
-rw-r----- 1 db2inst1 db2iadm1 10485760 Sep 08 15:36 SAMPLE.0.db2inst1.NODE0000.CATN0000.20030908153609.001
-rw-r----- 1 db2inst1 db2iadm1 8421376 Sep 08 15:36 SAMPLE.0.db2inst1.NODE0000.CATN0000.20030908153609.002
-
-rw-r----- 1 db2inst1 db2iadm1 10485760 Sep 08 15:36 SAMPLE.0.db2inst1.NODE0000.CATN0000.20030908153609.001
该备份映象便是由以上两个文件组成的。
三.检测由多个文件组成的备份映象
对于如何使用 db2ckbkp 实用程序对 DB2 的备份映象进行检测,用户可参考 DB2 命令手册中 db2ckbkp 的语法描述,这里就不再作详细介绍了,但对于如何正确的利用 db2ckbkp 对由多个文件组成的备份映象进行检测的操作要略作说明。
有时用户会发现,如上述例二中所示,虽然 DB2 提示用户已成功地完成了备份操作,但当利用 db2ckbkp 进行检测时,却被提示备份映象中有错误。这可能是由于对于由多个文件组成的映象的检测,用户没有将所有组成映象的文件的文件名都列出来的缘故所造成的。
例如,对于例二中所产生的映象文件检测时正确的命令是:
[test5l:/home/db2inst1]db2ckbkp SAMPLE.0.db2inst1.NODE0000.CATN0000.20030908153609.*
[1] Buffers processed: ####
[2] Buffers processed: ####
[3] Buffers processed: ####
Image Verification Complete – Successful.
或:
-
- [test5l:/home/db2inst1]db2ckbkp SAMPLE.0.db2inst1.NODE0000.CATN0000.20030908153609.001 SAMPLE.0.db2inst1.NODE0000.CATN0000.20030908153609.002
[1] Buffers processed: ####
[2] Buffers processed: ####
[3] Buffers processed: ####
Image Verification Complete – Successful.
如果在使用 db2ckbkp 时仅列出了组成备份映象的部分文件的文件名,如用户常认为只要列出第一个文件(以 .001 为扩展名的文件)就可以了,这会被 DB2 提示备份映象有错误,而使用户误以为备份映象文件不完整,如:
[test5l:/home/db2inst1]db2ckbkp SAMPLE.0.db2inst1.NODE0000.CATN0000.20030908153609.001
[1] Buffers processed: ####
ERROR! No LOG.FILE.HEADER found!
ERROR! No backup tail found!
Image Verification Complete - ERRORS DETECTED: 2
或:
[test5l:/home/db2inst1]db2ckbkp SAMPLE.0.db2inst1.NODE0000.CATN0000.20030908153609.002
[1] Buffers processed: ###
ERROR! Tablespace pagesize initially unknown.
Database page validation was skipped.
To resolve - sequence .001 must be first in the image list.
ERROR! Missing a BACKUP.START.RECORD.MARKER!
Image Verification Complete - ERRORS DETECTED: 2
以上两例的错误信息便是由于只指定了组成映象的部分文件的文件名而引起的。可见如果未能正确的使用 db2ckbkp 实用程序对备份映象进行检测,即使对于完整的映象也不能得到正确的检测结果,这反而会给自己带来困惑,因此正确的掌握这一检测工具的使用对于数据库备份计 划的实现是非常必要的。