说明:在线增量备份前提:

1、更改数据库参数 logretain, userexit, trackmod 为 on

2、更改参数之后完全离线备份数据库一次

3、之后就可以进行在线、在线增量备份了

测试结果通过,脚本如下。

重要!数据库归档日志必须按时备份至另一个地方,本例中为 C:/TESTDB.0/SQLOGDIR (在联机备份的情况下,一定带上日志,脱机备份就不需要日志了)

------------------------------------------------------------------------

C:/Documents and Settings/Administrator>cd/ 
C:/>db2 drop db TestDB 
DB20000I DROP DATABASE 命令成功完成。 
C:/>db2 create db TestDB 
DB20000I CREATE DATABASE 命令成功完成。 
C:/>db2 connect to TestDB

数据库连接信息

数据库服务器 = DB2/NT 8.2.0

SQL 授权标识 = ADMINIST...

本地数据库别名 = TESTDB

修改数据库参数,使之支持在线联机备份

C:/>db2 update db cfg for TestDB using logretain on userexit on trackmod on 
DB20000I UPDATE DATABASE CONFIGURATION 命令成功完成。

SQL1363W 为立即修改而提交的一个或多个参数未动态更改。对于这些配置参数,必须在所

有应用程序都与此数据库断开连接之后,更改才会生效。

执行增量、在线备份之前必须执行离线全备份一次

C:/>db2 backup db TestDB

备份成功。此备份映像的时间戳记是:20070419144951

 C:/>db2 connect to TestDB

数据库连接信息

数据库服务器 = DB2/NT 8.2.0

SQL 授权标识 = ADMINIST...

本地数据库别名 = TESTDB

创建测试表,并插入测试数据

C:/>db2 create table T1(C1 int) 
DB20000I SQL 命令成功完成。 
C:/>db2 insert into T1(C1) values (1) 
DB20000I SQL 命令成功完成。 
执行在线增量数据库备份 
C:/>db2 backup db TestDB online incremental 
备份成功。此备份映像的时间戳记是:20070419145112

  //但是我的却是:SQL2426N  未对此数据库启用增量备份。确保修改跟踪已激活,并对此数据库执行全备份。

        这里首先仍然要运行:db2 backup db TestDB online  ,即先做一次在线全备份!!!然后才能在线增量备份

模拟灾难,删除数据库!(注意,此前一定要将归档日志文件备份至另一个路径,保存好)

C:/>db2 drop db TestDB

DB20000I DROP DATABASE 命令成功完成。

根据在线增量备份恢复数据库

C:/>db2 restore db TestDB incremental automatic from "c:" taken at 2007041914511 
2 
DB20000I RESTORE DATABASE 命令成功完成。 
恢复后的数据库处于前滚暂挂状态,不可用 
C:/>db2 connect to TestDB 
SQL1117N 由于 ROLL-FORWARD PENDING,不能连接或激活数据库 "TESTDB"。 
SQLSTATE=57019 
前滚数据库,并指定归档日志位置,重要! 
C:/>db2 ROLLFORWARD DATABASE TESTDB TO END OF LOGS AND COMPLETE OVERFLOW LOG PAT 
H ("C:/TESTDB.0/SQLOGDIR") 
前滚状态 
输入数据库别名 = TESTDB 
节点数已返回状态 = 1 
节点号 = 0 
前滚状态 = 未暂挂 
下一个要读取的日志文件 = 
已处理的日志文件 = S0000001.LOG - S0000001.LOG 
上次落实的事务 = 2007-04-19-06.51.22.000000 
DB20000I ROLLFORWARD 命令成功完成。 
恢复据库完成,前滚完成,查询测试数据 
C:/>db2 connect to TestDB 
数据库连接信息 
数据库服务器 = DB2/NT 8.2.0 
SQL 授权标识 = ADMINIST... 
本地数据库别名 = TESTDB 
 
C:/>db2 select * from T1 
C1 
-----------

1

1 条记录已选择。

测试全部正常,退出

C:/>db2 connect reset 
DB20000I SQL 命令成功完成。 
C:/>db2 terminate 
DB20000I TERMINATE 命令成功完成。