DB2在线增量备份 还原增量备份及前滚恢复

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

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 命令成功完成。(责任编辑:卢兆林)

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页