db2数据库备份:浅谈DB2数据库的备份与恢复(下)



2、DB2数据库恢复 DB2数据库提供了 3种恢复类型:

1、崩溃恢复(crash recovery):崩溃恢复是用来在失败后立即进行恢复把数据库恢复到个事务致状态此状态所有更改只有在执行提交事务后才生效崩溃恢复使用命令 RESTART 执行

2、备份恢复(restore recovery):备份恢复可从上次所作备份中恢复数据库内容备份恢复使用 RESTORE 命令执行

3、向前恢复(forward recovery):在个数据库从备份中恢复了以后向前恢复可以重新执行那些在备份后才更改了数据库操作在这种情况下数据库可以恢复到备份和当前时间的间任何时间断向前恢复使用 ROLLFORWORD 命令执行

崩溃恢复和备份恢复对任何数据库都适用而向前恢复只有在数据库被指定可以使用此功能是才使用显示了此功能带来影响

数据库能否进行向前恢复带来影响

如果不允许进行向前恢复 如果允许进行向前恢复
在发生失败后可以把数据库恢复到失败前和最后次事务状态

同样也支持恢复到和最后次事务状态


可以把数据库恢复到任何有效备份状态但是不能重新执行发生在备份的后事务

可以把数据库恢复到任何有效备份状态并且可以重新执行从发生失败到当前为止提交事务


只能在没有任何应用连接到数据库时进行备份(这称为脱机备份)

可以在应用连接到数据库时和事务正在处理时进行备份(这称为联机备份)同样支持脱机备份


个备份都必须包含整个数据库当前状态

个备份可能包含整个数据库当前状态或者是个或多个表空间数据库表空间可以单独地备份和恢复




可以通过把数据库配置参数 LOGRETAIN 或 USEREXIT 设置为 YES 来使向前恢复生效日志会由于生成新文件而不断增加并且它们是无限制在这种情况下必须采取些办法把旧日志文件保存到文档中以防止文件系统被日志占满

1、RESTART 命令

此命令是当些操作还在处理时发生断电或软件Software崩溃后要发出个命令它建立个数据库连接并使用日志来把数据库恢复到事务致状态所有在失败发生前由提交操作所引起数据库更改都会生效所有在失败前被撤消操作和失败时正在处理事务对数据库进行更改都被撤消

下面是 RESTART 命令例子:

RESTART DATABASE mydb

2、RESTORE 命令

此命令使用存储在备份中内容来恢复数据库内容RESTORE 命令可以创建个新数据库RESTORE 命令需要 SYSADM,SYSCTRLSYSMAINT特权RESTORE 命令要使用备份可能包含整个数据库或组表空间恢复整个数据库必须脱机进行恢复表空间可以联机进行也就是在还有应用连接到数据库时进行RESTORE 命令语法为:

RESTORE DB 目标数据库别名 [TABLESPACE 表空间名] [FROM 介质名] [TAKEN AT 时间]

下面是些 RESTORE 命令例子:

(1)从个特定目录(/backup/mydb)中备份来恢复 mydb 数据库如果 mydb 不能够进行向前恢复数据库将被恢复到备份时状态而且可以立即使用如果能够进行向前恢复数据库会被置为向前挂起(pending)状态直到它被执行向前恢复命令的后才能被使用

RESTORE DATABASE mydb FROM /backup/mydb

(2)下面命令是对数据库 mydb 进行恢复并且在外部指定不进行向前恢复数据库可以被立即使用

RESTORE DATABASE mydb FROM /backup/mydb WITHOUT ROLLING FORWARD

(3)下面例子是从个指定目录(/backup/mydb)中来恢复 mydb 数据库个指定表空间此恢复要使用指定日期和时间:

RESTORE DATABASE mydb TABLESPACE _disibledevent=>

3、ROLLFORWARD 命令

ROLLFORWARD 命令是在执行了个 RESTORE 命令的后执行以便对数据库或它表空间进行向前恢复ROLLFORWARD 命令需要SYSADM,SYSCTRLSYSMAINT 特权并且数据库必须能够进行向前恢复

ROLLFORWARD 命令可以适用于整个数据库或是个或多个表空间它们状态此时都是向前挂起(pending)如果向前恢复整个数据库此过程必须是脱机而且数据库可以被恢复成备份时间和当前时间的中任何时间段如果只向前恢复单独表空间此过程既可以是联机也可以是脱机但是必须把表空间向前恢复到当前时间后再重新执行所有引起更改提交操作这样可保证被恢复表空间和数据库中其它部分保持ROLLFORWARD 命令语法为:

ROLLFORWARD DATABASE 数据库名 [TO {时间,END OF LOGS}][TABLESPACE {ONLINE,表空间名}]

下面是些 ROLLFORWARD 命令例子:

(1)此例子使 mydb 数据库恢复到当前时刻字句 AND STOP 是让数据库不被置为 ROLLFORWARD PENDING 状态并且可以被存取:

ROLLFORWARD DATABASE mydb TO END OF LOGS AND STOP

(2)下面例子向前恢复 mydb 数据库并重新执行在指定日期和时间的前提交所有事务:

ROLLFORWARD DATABASE mydb TO 2000-09-26-10.3059 AND STOP

(3)下面例子只把数据库 mydb 中表空间向前恢复此命令是在执行了次表空间级别恢复后发出它只适用于被恢复表空间此命令指出向前恢复是联机进行并且要进行到当前时间(日志末尾):

ROLLFORWARD DATABASE mydb TO END OF LOGS AND STOP TABLESPACE _disibledevent=>注:如果数据库中有些列是 LOB 数据类型并且它们被创建带有 NOT LOGGED 选项那么对这些列进行更新操作就没有被记录到日志中向前恢复就不会对这些列进行操作如果在向前恢复过程中遇到了没有日志它们值会被置为十 6进制0

Tags:  db2备份恢复 恢复备份数据库 db2数据库恢复命令 db2数据库备份

延伸阅读

最新评论

发表评论