对打开的数据库执行完全恢复
如果在数据库打开时出现介质故障,则数据库将继续运行。尝试向其中的数据文件写入数据时,数据文件将自动脱机。对这些数据文件进行查询不会导致其脱机,但是会向发出查询的用户返回错误。
与恢复关闭的数据库类似,首先需要查询需恢复的文件和归档日志。然后,使包含受损数据文件的所有表空间脱机。可使用如下命令完成该操作:
SQL> ALTER TABLESPACE survey OFFLINE TEMPORARY;
使用 TEMPORARY 选项会导致 Oracle 对所有属于表空间的联机数据文件执行检查点操作。经过检查点操作的数据文件在重新联机后不需要进行恢复,因为对于可能会影响它们的任何事务处理的最新 SCN 而言,它们是最新的。尽管在此命令运行时数据文件必须可用,但此选项更符合需要。问题可能是临时的,可以在不产生错误的情况下使表空间联机。
检查介质以确定问题原因。可使用 DBVERIFY 实用程序来执行此操作。如果文件被永久损坏,按前面就恢复关闭数据库所述的内容进行还原和恢复。还原和恢复步骤完成后,应使所有表空间重新联机。
2.执行用户管理的不完全恢复
在以下情况下,可将数据库恢复到过去的时间点:
希望数据库处于出现用户错误或管理错误之前的状态。
数据库包含损坏的块。
由于缺少某些重做日志文件,因此无法对数据库执行完全恢复。
您希望创建一个测试数据库,该数据库处于过去某个时间的状态。
丢失了数据文件和一个或多个未归档重做日志文件
可通过以下方式指明何时停止应用重做数据:
1).指定停止的时间
SQL> RECOVER DATABASE UNTIL
TIME '2005-12-14:12:10:03';
2).
指定停止的 SCN
SQL> recover database until change1487389;
3).在执行恢复时发出 CANCEL 命令
SQL> RECOVER DATABASE UNTIL CANCEL;
执行用户管理的不完全恢复
使用以下命令执行不完全恢复:
RECOVER [AUTOMATIC] DATABASE option
下面是选项的含义:
AUTOMATIC:自动应用归档和重做日志文件
option: UNTIL TIME 'YYYY-MM-DD:HH24:MI:SS'
UNTIL CANCEL
UNTIL CHANGE <integer>
USING BACKUP CONTROLFILE
基于取消的不完全恢复
基于取消的不完全恢复与对关闭数据库执行的完全恢复非常相似。差异在于执行 RECOVER 命令的方式;指定 UNTIL CANCEL 子句。此子句将导致恢复过程提示您确认要应用的每个重做日志文件的建议名称。因此,在进行恢复过程中,系统会提示您确认已归档或联机的重做日志文件名,而且对于每个文件名,您可以接受它,也可以更改它。到达要让恢复停止的时间点时,请输入 CANCEL,而不要接受文件名。这将停止恢复。
完成此操作后,必须使用 RESETLOGS 选项打开数据库。由于数据库当前正在执行另一实例化操作,因此需要重置重做日志序列号。
打开该数据库后,检查预警日志中的消息。通过这种方式,可以获知恢复是否已成功。要在恢复过程中自动应用重做日志文件,可以使用 SQL*Plus SET AUTORECOVERY ON 命令,在恢复提示符下输入 AUTO,或者使用 RECOVER AUTOMATIC 命令。
基于时间和更改的不完全恢复
基于时间和更改的不完全恢复与基于取消的恢复类似,区别在于使用不同标准来指定停止恢复的时间。基于时间的恢复使用在 RECOVER 命令的命令行中指定的时间来获知何时停止。基于更改的恢复使用在命令行中指定的 SCN。
与所有的不完全恢复一样,之后必须使用 RESETLOGS 选项打开数据库。
执行用户管理的不完全恢复:步骤
1.关闭数据库。
2.还原数据文件。
3.装载数据库。
4.恢复数据库。
5.使用 RESETLOGS 选项打开数据库。 resetlogs 将日志文件的SCN号强制置位1;
执行 ALTER DATABASE OPEN RESETLOGS 打开数据库。