昨天做了个实验,实验证明,不需要所有日志,只需要在线备份期间的活动日志即可恢复数据库,我的实验如下:
我在恢复数据库之后,把数据库日志和归档日志删除,然后在前滚,保证只有include logs里的日志
C:\Documents and Settings\db2admin>db2 create db tt on d:\
DB20000I CREATE DATABASE命令成功完成。
C:\Documents and Settings\db2admin>db2 connect to tt
数据库连接信息
数据库服务器 = DB2/NT 9.1.0
SQL 授权标识 = DB2ADMIN
本地数据库别名 = TT
C:\Documents and Settings\db2admin>db2 backup db tt online to d:\db2 compress in
clude logs
备份成功。此备份映像的时间戳记是:20100429104317
C:\Documents and Settings\db2admin>db2 restore db tt from d:\db2 taken at 201004
29104317 logtarget d:\db2
SQL2539W 警告!正在复原至与备份映像数据库相同的现有数据库。数据库文件将被删除。
要继续吗?(y/n) y
DB20000I RESTORE DATABASE命令成功完成。
C:\Documents and Settings\db2admin>db2 rollforward db tt to end of logs and stop
overflow log path (d:\db2)
前滚状态
输入数据库别名 = tt
节点数已返回状态 = 1
节点号 = 0
前滚状态 = 未暂挂
下一个要读取的日志文件 =
已处理的日志文件 = S0000003.LOG - S0000003.LOG
上次落实的事务 = 2010-04-29-14.25.37.000000 Local
DB20000I ROLLFORWARD命令成功完成
注意:在还原的时候必须保证log path (d:\db2)下面没有任何TXT文件,因为日志会被解压到此目录,如果有还原就会失败。
自动备份脚本:
文件db2_backup.bat内容如下(2个脚本必须放在C盘根目录下,否则请修改cd c:\为你的位置):
cd c:\
@echo 连接待备份数据库db_test
db2 connect to db_test
@echo 开始备份数据库db_test到d:\dbbak
db2 backup db db_test online to d:\dbbak compress include logs
@echo 数据库db_test已经成功备份到d:\dbbak
@echo 连接待备份数据库NETDB
db2 connect to netdb
@echo 开始备份数据库NETDB到d:\dbbak
db2 backup db netdb online to d:\dbbak compress include logs
@echo 数据库NETDB已经成功备份到d:\dbbak
exit
文件db2_backup_main.bat内容如下:
db2cmd -i -w db2_backup.bat
exit
将脚本加入到WINDOWS的计划任务中去,可以设置执行时间等,从而达到自动备份目的。