分类: DB2/Informix
2016-09-12 09:35:51
原文地址:DB2 数据库备份及恢复实验脚本 作者:niezhenqun
--创建数据库
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