- 浏览: 1516998 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (532)
- 软件设计师 (7)
- PSP (5)
- NET MD (9)
- Hibernate (8)
- DIY (51)
- Work (43)
- GAME (24)
- 未分类 (44)
- iPod (6)
- MySQL (39)
- JSP (7)
- 日语能力考试 (36)
- 小说 (4)
- 豆包网 (23)
- 家用电脑 (7)
- DB2 (36)
- C/C++ (18)
- baby (9)
- Linux (13)
- thinkpad (23)
- OA (1)
- UML (6)
- oracle (24)
- 系统集成 (27)
- 脑梗塞 (6)
- 车 (8)
- MainFrame (8)
- Windows 7 (13)
- 手机 (8)
- git (12)
- AHK (2)
- COBOL (2)
- Java (9)
最新评论
-
安静听歌:
... ...
UUID做主键,好还是不好?这是个问题。 -
lehehe:
http://www.haoservice.com/docs/ ...
天气预报 -
lehehe:
[url http://www.haoservice.com/ ...
天气预报 -
liubang201010:
监控TUXEDO 的软件推荐用这个,专业,权威.并能提供报警和 ...
(转载)Tuxedo中间件简介 -
tinkame:
Next[j] =-1 当j=0时;=Max{k|0<k ...
KMP字符串模式匹配详解
http://bzhang.mild.blog.163.com/blog/static/84530533200891683845806/
一、 DB2 数据库备份的方式与分类
1.1 按照数据库备份对数据库的使用影响来划分
A、在线备份(也称联机备份或热备份)
B、离线备份(也称脱机备份或冷备份)
说明:在线备份和离线备份最大的不同在于:在线备份数据库时,数据库仍然可以供用户使用,而离线备份数据库则不行。离线备份数据库时,必须断开所有与数据库有连接的应用后才能进行。
1.2 按照数据库的数据备份范围来划分
A、完全备份
B、增量备份
说明:完全备份数据库是指备份数据库中的所有数据,而增量备份只是备份数据库中的部分数据。
1.3增量备份的两种实现方式
A、增量备份(也称累计备份)
B、delta备份
说明:这两种备份方式的严格定义如下,
增量备份是自最近成功的完全备份以来所有更改的数据的备份。
delta 备份则是上一次成功的完全、增量或 delta 备份以后所做更改的数据的备份。
eg:db2 backup db sample online incremental delta use tsm
二、 DB2 备份文件的结构介绍
在不同的操作系统下,DB2 的备份文件的结构是不同的,这里概要地介绍一下。
2.1 Windows 操作系统下的数据库备份文件结构:
说明:Windows 操作系统下的数据库备份文件是嵌套在一系列文件夹之下的特殊结构。上例中,D:\DB2_Train 是指备份目录,TESTDB.0 是指数据库名称为 TESTDB,DB2 是指实例名称,NODE0000 是指节点名称,CATN0000 是指编目名称,20070801 是指备份发生的年月日,形如YYYYMMDD,181241是指备份发生的时间,精确到秒,也就是指 18 点 12 分 41 秒,形如HHMMSS,最后的 001 则是备份文件的一个序列号。
2.2 Unix 操作系统下的数据库备份文件结构:
说明:Unix 操作系统下的数据库备份文件就是一个文件。上例中,HTDC 是指数据库名称,db2inst1 是指实例名称,NODE0000 是指节点名称,CATN0000 是指编目名称,20070310002357 是指备份发生的具体时间,形如YYYYMMDDHHMMSS,同样地,它的时间精确到秒,也就是指 2007年3月10日0点23分57秒发生备份,最后的 001 则是备份文件的一个序列号。
以上为V9前的备份文件格式的区别,从V9版本开始,不论在Windows系统还是unix系统,其备份文件的格式都如同unix备份格式。
三、DB2 数据库备份实验(附完整命令脚本清单)
-------------------------------------------------------------------------------
实验环境:
操作系统 = Microsoft Windows XP professional
数据库服务器 = DB2/NT 8.2.0
SQL 授权标识 = DB2ADMIN
本地数据库别名 = DBTEST
-------------------------------------------------------------------------------
3.1实验环境搭建(简单)
创建数据库:
drop db dbtest ;
create db dbtest;
创建表:
CONNECT TO dbtest;
DROP TABLE t1;
CREATE TABLE t1
(
ID INT NOT NULL generated always AS identity ( start WITH 1,increment BY 1,no cache),
Msg varchar(100) NOT null,
PRIMARY KEY(id)
);
所谓简单,是建表之前没有建立表空间、容器等,建立的表被保存到默认表空间中。
3.2 离线备份与还原
3.2.1离线备份
默认情况下只能对数据库进行离线(脱机)备份,备份时需要断开与备份数据库相连接的进程。
插入测试数据,脚本如下:
INSERT INTO t1(Msg) values('记录1,离线备份');
进行离线备份,脚本如下:
db2 list applications FOR db dbtest show detail
db2 force application(**);
或:db2 force applications all
db2 backup db dbtest TO E:\DB2\backup\
--备份成功。此备份映像的时间戳记是:20081016155756
如果我们要进行增量备份或在线备份,会出现错误,所以默认情况下只能进行离线备份。
错误如下:
--欲进行增量备份
C:\>db2 backup db dbtest incremental TO E:\DB2\backup\
ERROR:SQL2426N 数据库尚未配置为允许增量备份操作。原因码 = "1"。
--欲进行在线备份
C:\>db2 backup db dbtest online TO E:\DB2\backup\
ERROR:SQL2413N 不允许联机备份,因为没有激活用于前滚的日志保留或用户出口,或者是因为备份暂挂条件正在对数据库起作用。
3.2.2 还原
灾难模拟,删除数据库dbtest,然后对数据库进行还原,脚本如下:
db2 drop db dbtest;
db2 restore db dbtest FROM E:\DB2\backup\ taken AT 20081016155756 ;
连接数据库,可以对表t1进行查询,脚本如下:
db2 connect to dbtest;
db2 select * from t1 ;
3.3 在线备份与还原
3.3.1 在线备份
数据库要能进行在线(logretain)、增量备份(trackmod),需要修改相应的参数,参数修改之后,与数据库相连的所有应用断开了,修改才会生效。此时,数据库处于暂挂状态,需要做一次离线备份。脚本如下:
db2 update db cfg for dbtest using logretain on –归档日志模式,可在线备份
如果此时欲连接数据库,此出错。
C:\>db2 connect to dbtest
ERROR:SQL1116N 由于 BACKUP PENDING,不能执行连接或激活数据库 "DBTEST"。SQLSTATE=57019
离线备份数据库;
db2 backup db dbtest TO E:\DB2\backup\
备份成功。此备份映像的时间戳记是:20081016164630
此时可以指定归档日志的存放路径,如将其存入d:\db2\arch_log下,脚本如下:
db2 update db cfg using logarchmeth1 disk:d:\db2\arch_log ;
插入测试数据,进行在线备份,脚本如下:
INSERT INTO t1(Msg) values('记录2,在线备份');
db2 backup db dbtest online TO E:\DB2\backup\
备份过程中插入另外一条测试数据,证明在线备份过程中数据库可以使用。
INSERT INTO t1(Msg) values('记录3,在线备份1')
备份成功。此备份映像的时间戳记是:20081016170256
由于只修改了logretain = on,要进行增量备份是不允许的,但可以做离线备份。
3.3.2 还原
由于进行的是在线备份(采用归档日志),要恢复数据库到最近状态,需要进行回滚操作,删除数据库之前,需要保留或备份活动日志,在实际应用中,我们也要尽可能的同步保存数据库的日志,以便减少故障带来的对数据恢复不一致的影响。备份活动日志,删除数据库dbtest,然后对数据库进行还原,脚本如下:
db2 drop db dbtest;
db2 restore db dbtest FROM E:\DB2\backup\ taken AT 20081016170256;
此时“不能连接或激活数据库 "DBTEST"。”必须进行回滚操作,脚本如下:
db2 ROLLFORWARD DATABASE dbtest TO END OF LOGS AND COMPLETE OVERFLOW LOG PATH ('D:\DB2\dbtest_log')
连接数据库,可以对表t1进行查询,脚本如下:
db2 connect to dbtest;
select * from t1 ;结果可以看到,我们在备份过程中插入的数据('记录3,在线备份1')也可以看到,保证了数据库数据的一致性。
3.4增量备份与还原
3.4.1离线增量备份
修改数据库参数 TrackMod ,使之支持数据库进行增量备份, 参数修改之后,与数据库相连的所有应用断开了,修改才会生效。此时,数据库处于暂挂状态,需要做一次离线备份。这里,logretain 、trackmod都开启。
脚本如下:
db2 connect to dbtest ;
INSERT INTO t1(Msg) values('记录1,离线备份');
db2 update db cfg using logretain on trackmod on ;
或者:db2 update db cfg for dbtest using logretain on trackmod on
db2 backup db dbtest TO E:\DB2\backup\
备份成功。此备份映像的时间戳记是:20081016193629
插入测试数据,进行在线备份,脚本如下:
INSERT INTO t1(Msg) values('记录2,增量备份');
db2 backup db dbtest incremental TO E:\DB2\backup\
备份成功。此备份映像的时间戳记是:20081016194210
3.4.2还原
过程同在线备份,由于采用归档日志,需要回滚操作,为此删除数据库之前需要保存活动日志。脚本如下:
db2 drop db dbtest
db2 restore db dbtest FROM E:\DB2\backup\ taken AT 20081016193629
--此时还不能使用数据库(由于 ROLL-FORWARD PENDING,不能连接或激活数据库 "DBTEST"。)
db2 restore db dbtest incremental FROM E:\DB2\backup\ taken AT 20081016194210
--由于增量备份是累计备份,而非delta备份,所以如果有多个增量备份,则还原最近一次增量备份就可以,接下来做回滚操作即可。
db2 restore db dbtest incremental automatic FROM E:\DB2\backup\ taken AT 20081016194210
这是针对delta备份的还原,上述语句中,有一个 automatic ,它表示无论有多少个增量备份,系统将全自动检索恢复数据库的顺序并自动恢复数据库。如果没有 automatic ,则需要多次手动恢复数据库,很麻烦而且容易出错。
--此时由于 ROLL-FORWARD PENDING,不能连接或激活数据库 "DBTEST"
db2 ROLLFORWARD DATABASE dbtest TO END OF LOGS AND COMPLETE OVERFLOW LOG PATH ('D:\DB2\dbtest_log')
以上备份策略是在logretain、trackmod都为on的情况下,即采用归档日志的情况,还原时需要回滚日志。如果采用循环日志,即trackmod为on,logretain为off的情况,离线增量备份还原过程如下:
(1) 备份
db2 update db cfg using logretain off ;
insert into t1(Msg) values('记录1,离线完全备份');
db2 force applications ALL ;
db2 backup db dbtest TO E:\DB2\backup ;
--备份成功。此备份映像的时间戳记是:20081027090205
--离线增量备份1
insert into t1(Msg) values('记录2,离线增量备份1');
db2 force applications ALL ;
db2 backup db dbtest incremental TO E:\DB2\backup ;
--备份成功。此备份映像的时间戳记是:20081027090356
--离线增量备份2
insert into t1(Msg) values('记录3,离线增量备份2');
db2 force applications ALL ;
db2 backup db dbtest incremental TO E:\DB2\backup ;
--备份成功。此备份映像的时间戳记是:20081027090502
--离线增量备份3
insert into t1(Msg) values('记录4,离线增量备份3');
db2 force applications ALL ;
db2 backup db dbtest incremental TO E:\DB2\backup ;
--备份成功。此备份映像的时间戳记是:20081027090605
注:如采用delta增量备份,语句如下
db2 backup db dbtest incremental delta TO E:\DB2\backup
(2)还原
--累计增量备份的还原
db2 drop db dbtest
--还原最近一次增量备份(告知系统要还原到哪个状态)
db2 restore db dbtest incremental FROM E:\DB2\backup taken AT 20081027090605
--还原最近一次离线完全备份
db2 restore db dbtest incremental FROM E:\DB2\backup\ taken AT 20081027090205
--再还原最近一次增量备份
db2 restore db dbtest incremental FROM E:\DB2\backup\ taken AT 20081027090605
--delta增量备份的还原
db2 restore db dbtest incremental FROM E:\DB2\backup taken AT 20081027090605
db2 restore db dbtest incremental FROM E:\DB2\backup\ taken AT 20081027090205
db2 restore db dbtest incremental automatic FROM E:\DB2\backup\ taken AT 20081027090605 ----依次按顺序还原离线完全备份后的每一次离线增量备份,这里可以使用automatic让系统自动检索还原顺序自动还原数据库
否则,顺序如下:
db2 restore db dbtest incremental FROM E:\DB2\backup\ taken AT 20081027090356
db2 restore db dbtest incremental FROM E:\DB2\backup\ taken AT 20081027090502
db2 restore db dbtest incremental FROM E:\DB2\backup\ taken AT 20081027090605
测试还原情况:
db2 connect to dbbtest ;--正常
db2 select * from t1 ;--正常
3.4.3 在线增量备份
要能进行在线增量备份,需要讲参数logretain 、trackmod开启,步骤和离线增量备份一致,这里不做详述。脚本如下:
插入测试数据,进行在线备份,脚本如下:
INSERT INTO t1(Msg) values('记录3,在线增量备份');
db2 backup db dbtest online incremental TO E:\DB2\backup\
(备份过程中,数据库可用,可执行INSERT INTO t1(Msg) values('记录4,在线增量备份1'))
备份成功。此备份映像的时间戳记是:20081016195707
3.4.4 还原
过程同在线备份还原,需要保存活动日志,以便回滚操作。脚本如下:
db2 DROP db dbtest
db2 restore db dbtest FROM E:\DB2\backup\ taken AT 20081016193629
db2 restore db dbtest incremental FROM E:\DB2\backup\ taken AT 20081016195707
db2 ROLLFORWARD DATABASE dbtest TO END OF LOGS AND COMPLETE OVERFLOW LOG PATH ('D:\DB2\dbtest_log')
测试正常。
数据库的备份是至关重要的,对于不同情况采取不同的备份方式,相应地数据库的还原也根据备份的方式而不同。默认情况下,只能进行离线完全备份,通常地,我们一次性修改logretain 、trackmod、userexit 为 on 状态,因为实际应用中多以在线完全备份、在线增量备份为主,此时可以进行任何一种备份。需要强调的是,只要启用了归档日志(logretain=on),就可以进行在线备份,而此时不论是在线备份还是离线备份,还原数据库时都需要回滚日志,才能恢复正常,为此对日志(特别是活动日志)的保存值至关重要的。只要启用了trackmod=on,就可以进行增量备份(累计增量备份和delta增量备份)。如果采用delta增量备份,还原时还要注意还原的顺序(使用automatic让系统自动检索还原顺序自动还原数据库)。
本文基本概述了DB2数据库的备份与还原方法,要弄明白这些方式的差异,也需要自己动手实验一番。
发表评论
-
(转)DB2备份恢复数据库步骤
2011-11-23 16:23 901http://tech.it168.com/ibmtec ... -
(转)DB2 SQL Error: SQLCODE=-964, SQLSTATE=57011的原因及解决方法
2011-11-07 15:03 9413http://blog.sina.com.cn/s ... -
(转)DB2解决“数据库日志已满”操作 SQLCODE=-964
2011-11-07 14:49 2629http://www.db2china.ne ... -
(转)用哪个DB2命令查看DB2 instance是启动还是停止的?
2011-09-30 13:25 3602http://bbs.chinaunix.net/thre ... -
(转)论 LOAD 与 IMPORT 中的 codepage 转换
2011-07-11 14:55 1112http://www.ibm.com/develo ... -
(转)DB2导出数据库表结构和数据
2011-07-11 14:19 1504http://hi.baidu.com/mylovecha ... -
(转)DB2 9 中基于字符的字符串函数
2011-06-16 11:32 1377http://www.ibm.com/develo ... -
(转)db2look:生成 DDL 以便重新创建在数据库中定义的对象
2011-05-31 14:56 1601http://blog.csdn.net/hrfdotnet/ ... -
(转)【俊哥儿张】DB2:学习 DB2LOOK 命令
2011-05-31 14:54 1326http://space.itpub.net/770528 ... -
(转)Recreate optimizer access plans using db2look
2011-05-31 14:53 1230http://www.ibm.com/develo ... -
(转)DB2中ALTER TABLE为什么需要REORG操作?
2011-05-12 13:10 1620http://www.flatws.cn/article/ ... -
(转)DB2 3.2.2 表空间维护
2011-05-11 12:53 1133http://book.51cto.com/art/2 ... -
(转)DB2 数据类型
2011-05-11 12:52 3943http://hi.baidu.com/uvvv/blog ... -
(转)DB2 Basics: Table spaces and buffer pools
2011-05-06 15:29 1421http://www.ibm.com/develo ... -
(转)SQL1092N "USER" does not have the authority to perform therequested command -
2011-03-23 17:39 5418http://dbaspot.com/foru ... -
(转)DB2 sqlstate 57016 原因码 "7"错误详解
2011-03-07 17:38 1446http://www.db2china.net/clu ... -
(转)在英语 OS 上设置 DB2 UDB 版本 8 中的混合字节字符集(MBCS)数据库
2011-02-16 16:25 1549http://www.ibm.com/develo ... -
(转)DB2 CODEPAGE List
2011-02-15 15:15 1369http://www.db2china.net/hom ... -
(转)快速参考: DB2 命令行处理器(CLP)中的常用命令
2010-11-11 10:44 931http://www.ibm.com/develo ... -
(转)DB2 and IBM's Processor Value Unit pricing
2010-01-13 17:36 1322http://www.ibm.com/developerwor ...
相关推荐
浅谈IBM DB2的数据库备份与恢复
年 月 日 实验 实验目的 在课程理论知识学习的基础上,使用DB2数据库管理系统工具对数据库的备份恢复操作有直接的体会。 实验内容 在了解DB2数据库管理系统中的数据库备份、恢复机制的基础上,进行有关DB2数据库...
深入了解IBM+DB2数据库的备份与恢复
db2数据库安装包 db2数据库链接服务器驱动 db2数据库安装方法
对DB2备份还原的基本概念做简要说明,并有具体的实验说明,比较全的资料
DB2教程 ibm DB2 数据库教程。。。。。。。。。。。。。
IBM DB2数据库认证考试题库C2090-614 是属于DB2数据最高一级认证考试,认认真真把题库看上两边通过很轻松。
ibm,db2数据库 odbc驱动 ibm,db2数据库 odbc驱动 ibm,db2数据库 odbc驱动
DB2数据库灾难行恢复步骤,IBM服务无果,最后自己总结可用的恢复步骤 仅限DB2数据库
IBM DB2数据库服务端客户端卸载教程 IBM DB2数据库服务端客户端卸载教程
—— 4.1 恢复备份数据库备份文件 —— 4.2 执行脚本 5. 计算机任务调度备份数据库 —— 5.1 数据库实时备份 6. 数据库维护 —— 6.1 检查并启动DB2数据库服务 —— 6.2 查看数据库并手动备份 —— 6.3 慎用【频繁...
IBM DB2通用数据库商业IBM DB2通用数据库商业
DB2数据库SQL注入手册1
IBM 认DB2数据库证考试题库C2090-611 两套118题,认真做两遍,可轻松通过考试。
中国银联选择了IBM DB2是因为IBM DB2是商业数据库领域的翘楚、具有超强的技术实力,在联机交易、数据库的可扩展性和可用性,以及容灾能力等性能上处于领先地位,特别是IBM DB2在金融领域积累了丰富的经验,能保障...
客户那边主要用DB2 没办法 咱也开始研究DB2 从DB2的开始建库,建表插入数据 offline online备份都做了详细说明,有纯指令操作,也有后面的用图形界面操作,当然个人还是推荐用命令行来进行 效率比较搞。
IBM DB2通用数据库商业智能教程,IBM DB2通用数据库商业智能教程
IBM+DB2数据库系统管理与性能调优,详解了管理和调优
IBM强大的数据库DB2的安装指南,入门参考,学习DB2,现在开始吧
IBM DB2通用数据库SQL入门 (PDF) 关于DB2的资料较少,这个是中文的