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]