DB2 数据库备份及恢复实验脚本

来源:互联网 发布:tinyumbrella for mac 编辑:程序博客网 时间:2024/06/07 03:39
--离线备份数据库测试


--创建数据库
db2 create db TestDB

--创建测试表、插入测试记录并校验
db2 connect to TestDB
db2 create table T1(C1 int,C2 VarChar(50))
db2 insert into T1(C1,C2) values(1,'离线备份测试')
db2 select * from T1

--备份数据库(介绍数据库备份的种类)
db2 backup db TestDB to D:\DB2_Train

--模拟灾难,删除数据库
db2 drop db TestDB

--恢复数据库并校验
db2 restore db TestDB from D:\DB2_Train

db2 connect to TestDB
db2 select * from T1

---------------------------------------------
--在线备份数据库测试


--更改数据库配置参数
db2 update db cfg using LOGRETAIN on

--离线完全备份数据库,使数据库脱离“备份暂挂”状态
db2 backup db TestDB to D:\DB2_Train

--在测试表中插入新的记录,并校验
db2 insert into T1(C1,C2) values(2,'在线备份测试')
db2 select * from T1

--联机备份数据库
db2 backup db TestDB online To D:\DB2_Train

--获取数据库活动日志路径并备份日志

--模拟灾难,删除数据库
db2 drop db TestDB

--恢复数据库
db2 restore db TestDB from D:\DB2_Train taken at 20100426075221

--连接数据库(会失败)
C:\>db2 connect to TestDB
SQL1117N 因为处于 ROLL-FORWARD PENDING 状态,所以不能连接或激活数据库
"TESTDB"。 SQLSTATE=57019

--前滚数据库,使之可用
db2 ROLLFORWARD DATABASE TESTDB TO END OF LOGS AND COMPLETE OVERFLOW LOG PATH ("D:\DB2_Train\SQLOGDIR")

--连接数据库,并测试
db2 connect to TESTDB

db2 select * from T1

---------------------------------------------------------
--增量备份数据库测试

--更改数据库参数,使之支持增量备份
db2 update db cfg using TRACKMOD on

--在执行增量备份前,必须完全离线备份数据库一次
db2 backup db TestDB to D:\DB2_Train

--在测试表中插入新的记录,并校验
db2 connect to TestDB
db2 insert into T1(C1,C2) values(3,'增量备份测试')
db2 select * from T1

--执行增量备份命令
db2 backup db TestDB incremental to D:\DB2_Train

--模拟灾难,删除数据库(注意备份日志)
db2 drop db TestDB

--方法1:根据增量备份文件,手动还原数据库
db2 restore db TestDB incremental from D:\DB2_Train taken at 20100426080406

C:\>db2 connect to TestDB
SQL1119N 因为先前复原不完整或者仍在进行,所以不能连接或激活数据库 "TESTDB"。
SQLSTATE=57019

db2 restore db TestDB incremental from D:\DB2_Train taken at 20100426080303

C:\>db2 connect to TestDB
SQL1119N 因为先前复原不完整或者仍在进行,所以不能连接或激活数据库 "TESTDB"。
SQLSTATE=57019

C:\>db2 restore db TestDB incremental from D:\DB2_Train taken at 20100426080406
DB20000I RESTORE DATABASE 命令成功完成。

C:\>db2 connect to TestDB
SQL1117N 因为处于 ROLL-FORWARD PENDING 状态,所以不能连接或激活数据库
"TESTDB"。 SQLSTATE=57019

--前滚数据库,使之可用

db2 rollforward db bill_bt to end of logs and stop overflow log path "(c:\db2log_bill_bt)"或者
db2 ROLLFORWARD DATABASE TESTDB TO END OF LOGS AND COMPLETE OVERFLOW LOG PATH ("D:\DB2_Train\SQLOGDIR")

--测试
db2 connect to TestDB
db2 select * from T1


--方法2:根据增量备份文件,自动还原数据库
db2 drop db TestDB

db2 restore db TestDB incremental automatic from D:\DB2_Train taken at 20100426080406

--前滚数据库,使之可用
db2 ROLLFORWARD DATABASE TESTDB TO END OF LOGS AND COMPLETE OVERFLOW LOG PATH ("D:\DB2_Train\SQLOGDIR")

--测试
db2 connect to TestDB
db2 select * from T1

----------------------------------------------------------------------------------------------------
--数据库的表空间重定向恢复测试


--建立测试表空间,并记录其ID(4)
db2 CREATE REGULAR TABLESPACE DATA_TB PAGESIZE 4 K MANAGED BY DATABASE USING ( FILE 'D:\DB2\NODE0000\TESTDB\DATA_TB' 2560 ) BUFFERPOOL IBMDEFAULTBP

db2 list tablespaces show detail
db2 list tablespace containers for 4 show detail


--在该表空间上建立测试表2,并在测试表中插入新的记录,并校验
db2 create table T2(C1 int,C2 VarChar(50)) in DATA_TB
db2 insert into T2(C1,C2) values(4,'重定向备份测试')
db2 select * from T2


--现在要将数据库的表空间DATA_TB转移至路径 D:\DB2_Train\TestDB_TableSpace 统一存储


--第一步,备份数据库,然后模拟灾难,删除数据库
db2 backup db TestDB to D:\DB2_Train

db2 drop db TestDB


--第二步,编辑脚本,准备重定向恢复数据库
--表空间0,1,2,3 是系统管理的自动存储器表空间,不需要也不允许更改存储位置
db2 restore db TestDB from D:\DB2_Train taken at 20100426082206 redirect
db2 set tablespace containers for 4 using (file 'D:\DB2_Train\TestDB_TableSpace\0' 2560)
db2 restore db TestDB continue


--前滚数据库,使之可用
db2 rollforward db TestDB to end of logs and complete
db2 connect to testDB
db2 select * from T2

1.获取系统下的所有实例

db2ilist;

2.设置当前实例

set db2instance=db2fuel\

3.获取当前实例

db2 get instance

4 显示系统下的所有数据库

db2 list db directory

5删除数据库

db2 drop db dbname

6 恢复数据库备份文件

db2 RESTORE DATABASE bill FROM d:\ TAKEN AT 20100528174528 TO e: INTO bill_bt logtarget c:\bill_log_bt NEWLOGPATH c:\bill_log_bt

db2 restore db bill_bt continue

db2 rollforward db bill_bt to end of logs and stop overflow log path "(c:\db2log_bill_bt)"

db2 connect to bill_bt

db2 list tablespaces