1、崩溃恢复(crash recovery):崩溃恢复是用来在失败后立即进行恢复,把数据库恢复到一个事务一致状态,此状态的所有更改只有在执行提交事务后才生效。崩溃恢复使用命令 restart 执行。
2、备份恢复(restore recovery):备份恢复可从上一次所作的备份中恢复数据库的内容。备份恢复使用 restore 命令执行。
3、向前恢复(forward recovery):在一个数据库从备份中恢复了以后,向前恢复可以重新执行那些在备份后才更改了数据库的操作。在这种情况下,数据库可以恢复到备份和当前时间之间的任何时间断。向前恢复使用 rollforword 命令执行。
崩溃恢复和备份恢复对任何数据库都适用,而向前恢复只有在数据库被指定可以使用此功能是才使用。表一显示了此功能带来的影响。
表一 数据库能否进行向前恢复带来的影响
| 如果不允许进行向前恢复 | 如果允许进行向前恢复 |
|---|---|
在发生失败后,可以把数据库恢复到失败前与最后一次事务一致的状态。 | 同样,也支持恢复到与最后一次事务一致的状态。 |
可以把数据库恢复到任何有效的备份状态,但是不能重新执行发生在备份之后的事务。 | 可以把数据库恢复到任何有效的备份状态,并且可以重新执行从发生失败到当前为止提交的事务。 |
只能在没有任何应用连接到数据库时进行备份(这称为脱机备份)。 | 可以在应用连接到数据库时和事务正在处理时进行备份(这称为联机备份)。同样支持脱机备份。 |
每一个备份都必须包含整个数据库的当前状态。 |
可以通过把数据库配置参数 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 命令
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器