利用联机全量备份恢复示例数据库DB2TEST1
利用联机备份映像文件恢复数据库,需要用到联机备份期间相关的日志文件,如果没有这些日志文件,整个恢复过程将不能完成。由于我们在联机数据库备份时使用INCLUDE LOGS选项,所以在联机全量备份映像文件中包含了联机备份期间相关的日志文件。要从备份映像复原日志文件,可使用RESTORE DATABASE命令的LOGTARGET选项,并指定存在于DB2服务器上的标准路径。然后,复原数据库实用程序将日志文件从映像写至目标路径。如果目标路径中已存在名称相同的日志文件,复原操作将失败并返回一个错误。如果未指定 LOGTARGET选项,则不会从备份映像中复原任何日志文件。如果指定 LOGTARGET选项,且备份映像不包含任何日志文件,则在尝试复原任何表空间数据之前,将返回一个错误。如果指定无效或只读路径,复原操作也将失败。在指定 LOGTARGET选项条件下,复原数据库或表空间的过程中,如果不能抽取一个或多个日志文件,则复原操作失败并返回错误。还可以选择只复原保存在备份映像中的日志文件。要执行此操作,可使用 RESTORE DATABASE命令的LOGTARGET选项指定LOGS选项。以此方式复原日志文件时,如果复原操作遇到任何问题,则复原操作失败并返回错误。
下面我们来利用之前的联机备份映像(时间戳为20070928223032)进行还原。在资源管理器中,打开示例数据库DB2TEST1的活动日志目录C:\DB2\NODE0000\SQL00002\SQLOGIDR\(想查看示例数据库DB2TEST1的活动日志目录,可以使用GET DB CFG看到),删除所有的日志文件(注意,生产系统不能删除活动日志,否则数据库会宕机)。本示例是为了演示如何还原数据库,删除日志后随即执行还原,为了更清晰的看到如何利用备份文件中的日志进行还原,故删除了以前的活动日志。
在DB2CLP窗口中发出带LOGTARGET选项的RESTORE DATABASE命令,并指定把备份映像中的日志文件放到C:\DB2\NODE0000\SQL00002\SQLOGIDR\中,具体如清单11所示:
- - 清单 11 .利用联机备份映像还原示例数据库DB2TEST1
C:\> db2 restore db db2test1 taken at 20070928223032 logtarget C:\DB2\NODE0000\SQL00002\SQLOGDIR
SQL2539W 警告!正在复原至与备份映像数据库相同的现有数据库。数据库文件将被删除。
要继续吗?( y / n ) y
DB20000I RESTORE DATABASE命令成功完成。
如清单11所示,还原的过程中,会提示“正在复原至与备份映像数据库相同的现有数据库。数据库文件将被删除。是否要继续?”这时候选择y,也就是“是”的意思,回车。命令成功完成,这样就把备份映像中的S0000001.LOG日志文件释放到了C:\DB2\NODE0000\SQL00002\SQLOGIDR\目录中。由于归档日志情况下的利用联机备份映像还原必须进行前滚恢复,所以接下来我们进行前滚恢复,在DB2CLP窗口中发出ROLLFORWARD DB命令,具体如清单12所示:
- - 清单 12 .对示例数据库DB2TEST1进行前滚恢复
C:\> db2 rollforward db db2test1 to end of logs and stop
前滚状态
输入数据库别名 = db2test1
节点数已返回状态 = 1
节点号 = 0
前滚状态 = 未暂挂
下一个要读取的日志文件 =
已处理的日志文件 = S0000001.LOG - S0000001.LOG
上次落实的事务 = 2007-09-28-14.30.36.000000 UTC
DB20000I ROLLFORWARD命令成功完成。
命令成功完成,可以看到,在前滚过程中,对S0000001.LOG已经进行了前滚。
此时在DB2CLP窗口中,连接上示例数据库DB2TEST1,发出SELECT语句,查看示例表TEST1,可以看到我们在联机备份时插入的数据,名称为“SCA”的记录已经成功恢复,具体如清单13所示:
- - 清单 13 .查看示例表TEST1
C:\> DB2 CONNECT TO DB2TEST1
数据库连接信息
SQL 授权标识 = RHETTE
本地数据库别名 = DB2TEST1
C:\> DB2 SELECT * FROM TEST1
ID NAME NOTE
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 RHETTE the first rows
2 DANIEL the second rows
3 SCA the third rows
3 条记录已选择。
至此,我们成功的利用联机备份映像还原了示例数据库DB2TEST1,总结一下,整个过程如下:
在归档日志模式下,对数据库发出带ONLINE和INCLUDE LOG选项的BACKUP DATABASE命令,联机全量备份示例数据库DB2TEST1,备份映像中包含联机备份期间相关的日志。
利用带LOGTARGET选项的RESTORE DATABASE命令,使用联机备份映像恢复示例数据库DB2TEST1,并把日志文件中的日志文件解压到示例数据库DB2TEST1的活动日志目录中。
利用前滚恢复滚动到日志末尾完成最后的操作。