|
所谓数据备份,就是保留一套备用系统,当运行系统出现故障时,能够以最小的时间恢复原来的数据。数据库的备份,可以是整个数据库的拷贝,也可以是其中一部分数据的拷贝(一个或多个表空间)。数据备份一般有两个层次: 一、DB2数据库的备份 DB2数据库可以备份整个数据库,也可以备份其中的一个或多个表空间;可以在应用连接到数据库时和事务正在处理时进行备份(这称为联机备份),也可以在没有任何应用连接到数据库时进行备份(这称为脱机备份)。(见表一) 其中介质名一般指定为介质的绝对路径,在 AIX 中不回转的磁带机设备名为 /dev/rmt0,回转的磁带机设备名为 /dev/rmt0.n 。也可将数据备份在硬盘上,介质名即为其绝对路径。BACKUP命令在指定的介质上生成一个或多个备份文件,以下显示了在 AIX 4.3 for RS/6000 上生成的文件名结构: 二、DB2数据库的恢复 DB2数据库提供了三种恢复类型: 可以通过把数据库配置参数 LOGRETAIN 或 USEREXIT 设置为 YES 来使向前恢复生效。日志会由于生成新的文件而不断增加,并且它们是无限制的。在这种情况下,必须采取一些办法把旧的日志文件保存到文档中,以防止文件系统被日志占满。 1、RESTART 命令 此命令是当一些操作还在处理时发生断电或软件崩溃后要发出的第一个命令。它建立一个数据库的连接,并使用日志来把数据库恢复到事务一致状态。所有在失败发生前由提交操作所引起的数据库更改都会生效。所有在失败前被撤消的操作和失败时正在处理的事务对数据库进行的更改都被撤消。 下面是 RESTART 命令的例子: RESTART DATABASE mydb 2、RESTORE 命令 此命令使用存储在备份中的内容来恢复数据库的内容。RESTORE 命令可以创建一个新的数据库。RESTORE 命令需要 SYSADM,SYSCTRL或SYSMAINT特权。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 ONLINE FROM /backup/mydb TAKEN AT 20000926201226 3、ROLLFORWARD 命令 ROLLFORWARD 命令是在执行了一个 RESTORE 命令之后执行的,以便对数据库或它的表空间进行向前恢复。ROLLFORWARD 命令需要SYSADM,SYSCTRL 或 SYSMAINT 特权,并且数据库必须能够进行向前恢复。 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 |
评论 {{userinfo.comments}}
{{child.content}}
{{question.question}}
提交