默认情况为循环日志,也就是无法进行日志归档或在线备份,若需要进行在线备份,需修改为归档日志模式。对于v9.5以后的版本,貌似只需要修改First log archive method                 (LOGARCHMETH1) = DISK:/home/db2inst1/db2data/  这一个参数即可实现在线归档。db2 update db cfg for db2name using logarchmeth1 'disk:/home/db2inst1/db2data'LOGARCHMETH1这个即设置归档的方式,可以指定DISK、TSM等参数。修改该参数后需要重启数据库才可生效。

[db2inst1@localhost backup]$ db2stop force11/25/2013 22:17:02    0  0  SQL1064N  DB2STOP processing was successful.SQL1064N  DB2STOP processing was successful.[db2inst1@localhost backup]$ db2start11/25/2013 22:17:07    0  0  SQL1063N  DB2START processing was successful.SQL1063N  DB2START processing was successful.[db2inst1@localhost backup]$ db2 connect to sampleSQL1116N  A connection to or activation of database "SAMPLE" cannot be madebecause of BACKUP PENDING.  SQLSTATE=57019

发现重启后还是不能连接,这时数据库状态为BACKUP PENDING,需要做一个备份,记住是离线备份。db2 backup db sample to离线备份完成后,即可连接成功。db2 archive log for db sample--测试日志归档是否成功,执行完毕后到/home/db2inst1/db2data/db2inst1/EPS目录查看是否有归档日志生成。

对于较低版本修改为在线归档的方法(此2个参数是必须修改的,对于高版本,也可继续使用):

1.db2 update db cfgforsample using userexit on;--启用用户出口

2.db2 update db cfg using logretain on;--启用归档日志

3.db2 update db cfg using trackmod on;--启用增量备份功能

在线备份:修改为归档模式后,数据库不可连接,为backup pending状态,需进行一次脱机备份后才可继续使用。db2 force application all;db2 backup db sample to --脱机备份

db2 backup db sample online to --在线备份(不包含日志)
db2 backup db sample online to include logs--在线备份(包含归档日志)
db2 archive log for db sample--切换归档日志
还原:
包含归档日志的还原,首先需要将log恢复出来
db2 restore db db sample from /home/db2inst1/db2data taken at 20141104092152 logtarget /home/db2inst1/dbsample_log/
db2 "rollforward db sampleto end of logs and stop overflow log path(/home/db2inst1/dbsample_log/)"--日志回滚
恢复1:db2 restore db[数据库名][taken at 2011**** ]db2 rollforward db[数据库名]to end of logs and complete
恢复2:db2 restore db[数据库名][taken at 2011**** ]db2 rollforward db[数据库名]to end of logs and complete overflow log path(/dbfiles/logarchive)
恢复3:db2 restore db[数据库名][taken at 2011****] logtarget /dbfile/logarchivedb2 rollforward db[数据库名]to end of logs and complete overflow log path(/dbfiles/logarchive)

end of logs的作用是让DB2在执行备份操作后应用所有指定位置的可用的日志文件在前滚处理期间,DB2如果在当前日志路径中没有发现日志文件,则搜索overflow log path选项指定的路径,并使用这个位置的日志文件

执行sample数据库前滚,可以使用下列语句:

rollforward database sample to end of logs and complete
rollforward database sample to timestamp and complete
rollforward database sample to timestamp using local time and complete这几种恢复后的数据有什么差别吗?
1和2的区别在于,1使用默认的日志路径进行前滚,2指定了/dbfiles/logarchive为日志的路径2和3的区别在于,3多了logtarget /dbfile/logarchive,这个子句只有在备份时(db2 backup db test online to /home/db2inst1/on_back/ include logs)指定了include logs才可以用,把你备份出来的文件里包含的日志文件释放到/dbfile/logarchive目录下
####
db2 归档日志的相关信息保存在恢复历史文件中,可以通过db2 list history命令查看
db2 list history archive log all for eps;
清除这些信息,需要使用db2 prune history命令。该命令会清楚指定时间戳及以前的所有条目(不只是归档日志)。默认情况下,系统不会清除最近一次数据库
全备之后的归档日志信息:db2 prune history 20100103235553
db2 list history backup all for eps
通过使用 and delete参数,可以在清理条目的同时删除对应的归档日志文件。
db2 prune history 20100103235608 and delete

对于全备之后生成的归档日志文件,不会自动清除,如果想强制清除,可以使用with force option参数。

db2 prune logfile命令可以清除活动目录下的在线归档日志文件,但对离线归档日志文件无效。

#####

从v8.2开始提供recover database,新的recover database命令结合了restore database 和 rollforward database命令的功能,简单来说recover=restore+rollforward,使用此命令时,根据恢复历史文件中的信息使数据库恢复到一个指定的时间,它自动选择最佳适用备份镜像来执行恢复操作。

recover db sample
recover db sample to 2015-03-10-11.00.00 using local time

第一行,db2从可用最近备份镜像恢复sample数据库,并将前滚到日志的最后

第二行,db2将sample数据库恢复到时间时间点2015-03-10-11.00.00,这是按照当地时间指定的