ysoren 发表于 2016-11-19 03:43:19

DB2数据库备份及恢复操作

  一、创建数据库及表
  --创建数据库,数据库名为maxdb7;
create database maxdb7;
  --连接数据库
connect to maxdb7;
  --建表 表名为test1
create table test1(
id    integernot null,
name    varchar(20),
email    varchar(20),
primary key(id)
);

  --插入数据
insert into test1 values(1,'one','one@hikescom.com');
insert into test1 values(2,'two','two@hikescom.com');
insert into test1 values(3,'three','three@hikescom.com');
  --提交
commit;
  二、offline备份及恢复
  2.1、offline备份
  --首先要断开当前服务器链接
connect reset;

  --离线备份,指定备份存放的地址,备份之后会返回一个时间戳
backup db maxdb7 to d:\DB2\backup\
  2.2、数据恢复
  --恶意删除数据库
drop database maxdb7;

  --恢复备份
restore db maxdb7 from d:\DB2\backup taken at 20100720120756;
  --其中201007201207561是备份的时间戳,可以在备份文件名中找到

  --然后再连接数据库并查询表test1可以得到结果
connect to maxdb7;
select * from test1;






  三、online备份及恢复
  3.1、online备份
  --连接
connect to maxdb7;

  --修改数据库参数,使之支持在现联机备份
update db cfg for maxdb7 using logretain on trackmod on;
  --此时会提示:对于这些配置参数,必须在所有应用程序都与此数据库断开连接之后,更改才会生效。
  --此时 ,也需要做一次数据库的全备份,否则不能联机备份,试过很多次必须要这样。
connect reset;
backup db maxdb7 to d:\DB2\backup1\;
  --然后在连接数据库,做在线备份

connect to maxdb7;

  --指定归档日志的存放路径
update db cfg using logarchmeth1 disk:d:\DB2;


  --插入几条数据
insert into test1 values(4,'four','eight@hikescom.com');

insert into test1 values(5,'five','nine@hikescom.com');

  insert into test1 values(6,'six’,'six@hikescom.com');
  --提交
commit;

  --数据库on备份
  à完全备份:备份所有数据库
backup db maxdb7 online to d:\DB2\backup1\
  à增量备份:备份与上次完全备份以来更改过的数据
backup db maxdb7 online incremental to d:\DB2\backup1\
  àdelta备份:备份自最近以来最近一次备份更改过的数据
backup db maxdb7 online incremental delta to d:\DB2\backup1\

  à这里可以指定并行数,缓冲区数目还有每个缓冲区的大小,例如指定并行数为2,缓冲区数目为4,缓冲区大小为1024,则进行delta备份的话为:
backup db maxdb7 online incremental delta to d:\DB2\backup1\ with 2 buffers buffer 1024 parallelism 4 without prompting;

  3.2、备份恢复
  --恶意删除库,以此来进行数据库恢复
drop db maxdb7;

  --数据库恢复
restore db maxdb7 from d:\DB2\backup1 taken at 20100720140108;

  --前滚数据库,并指定归档日志位置,这个很重要,因为此时如果去连接数据库根本连不上

rollforward database maxdb7 to end of logs and complete overflow log path("d:\DB2");

  --结果
  ------------------------------ 输入的命令 ------------------------------
rollforward database maxdb7 to end of logs and complete overflow log path("d:\DB2");
------------------------------------------------------------------------------
rollforward database maxdb7 to end of logs and complete overflow log path("d:\DB2")

                                   前滚状态

   输入数据库别名                      = maxdb7
   节点数已返回状态                = 1

   节点号                              = 0
   前滚状态                                    = 未暂挂
   下一个要读取的日志文件          =
   已处理的日志文件                = S0000002.LOG - S0000002.LOG
   上次落实的事务                  = 2010-07-20-07.39.13.000000 UTC

  DB20000IROLLFORWARD 命令成功完成。


  ok,此时online数据恢复完成,试着做个测试

  connect maxdb7; --此时连接到 maxdb7没问题了。

  Select * from test1;--查询结果如下:
页: [1]
查看完整版本: DB2数据库备份及恢复操作