设为首页 加入收藏

TOP

oracle数据库完全恢复和不完全恢复以及执行用户管理辈分恢复(二)
2015-07-24 11:02:18 来源: 作者: 【 】 浏览:4
Tags:oracle 数据库 完全 恢复 以及 执行 用户 管理 辈分
示您需要从备份中还原哪些文件(如果有)。
然后关闭数据库。调查介质故障,确定问题原因。修复该问题,以便可以从备份中还原文件。

例如,您可能需要更换磁盘驱动器。
现在,可使用 RECOVER 命令来执行恢复。将恢复范围限制在所需范围,如数据文件或表空间。如果需要,可恢复整个数据库。随后,打开数据库。

SQL> SELECT file#, error FROM v$recover_file;
--确定需要恢复的数据文件

SQL> SELECT archive_name FROM v$recovery_log;
--确定完成恢复所需的归档日志文件

确定与恢复相关的文件

如果数据库仍处于打开状态,请按下面的说明查询文件。否则,请尝试启动实例,并装载数据库发出查询。

为了确定哪些数据文件需要恢复,查询 V$RECOVER_FILE 视图。ERROR 列指明文件需要恢复的原因。如果此列具备 OFFLINE NORMAL 以外的任何值,则需要恢复。

要查看所有受影响的数据文件和表空间的概况,可以在此查询中加入 V$DATAFILE 和 V$TABLESPACE。
下面是一个示例:

SELECT r.FILE# ,d.NAME df_name ,t.NAME tbsp_name, d.STATUS ,r.ERROR ,r.CHANGE# ,r.TIME

FROM V$RECOVER_FILE r, V$DATAFILE d, V$TABLESPACE t

WHERE t.TS# = d.TS#
AND d.FILE# = r.FILE#;

这可指示受损的程度,帮助您确定 RECOVER 命令的对象。

V$RECOVERY_LOG 视图显示执行恢复所需的归档日志文件。如果列表显示某些文件已移出默认归档日志位置,则必须将它们还原到某个位置,再执行恢复。
记录这些查询的结果后,关闭数据库。

还原与恢复相关的文件

确定了需要哪些数据文件和归档日志文件后,将它们还原到相应的磁盘位置。通过从备份位置复制数据文件,可以还原该数据文件,如以下示例所示:

$ cp /disk2/backup/datafile/survey01.dbf $ORACLE_BASE/oradata/ORCL/datafile/survey01.dbf

如果恢复需要任何归档日志,检查这些日志是否仍位于归档日志的默认磁盘位置。这些日志可能不在默认位置,
例如,已将它们移至磁带或其它磁盘驱动器。如果日志已被移动,则需将它们还原到默认归档日志位置或临时位置。如果默认位置(由 LOG_ARCHIVE_DEST_1 初始化参数指定)中有足够的可用空间,在该位置还原日志。否则,可以将日志置于某个其它磁盘位置。还原时,可指定该备用位置来查找归档日志文件。
如果需要移动数据文件,则必须将这一情况记录在控制文件中。通过执行 ALTER DATABASE RENAME FILE 命令,可以完成此操作,如下例所示:

SQL> ALTER DATABASE RENAME FILE
'/u01/app/oracle/oradata/ORCL/datafile/survey01.dbf' TO
'/newdisk/ORCL/datafile/survey01.dbf';
--须先启动实例并装载数据库,然后才能执行 ALTER DATABASE RENAME FILE 命令。

载数据库并使所有数据文件联机(如果尚未执行此操作)。通过查询 V$DATAFILE 视图,可以检查每个数据文件的状态。可使用如下命令使数据文件联机:

SQL> ALTER DATABASE DATAFILE '/newdisk/ORCL/datafile/survey01.dbf' ONLINE;

应用重做数据

此时,数据文件已还原到过去的某个时间点。归档日志文件也已还原到其默认位置或某个其它位置(仅用于此恢复)。已准备就绪,可执行真正的恢复步骤,这意味着已应用重做且数据文件已恢复到最新 SCN。
使用 SQL*Plus RECOVER 命令执行此操作。
如果没有指定 AUTOMATIC 选项,则系统会提示您指定要应用的每个重做日志文件。这样可以提高对恢复过程的控制。通常,AUTOMATIC 用于完全恢复。
如果归档日志文件已还原到数据库默认位置以外的某个磁盘位置,则必须指定 FROM 子句。提供存储这些文件的目录,恢复过程将在该目录中寻找文件。
最后,打开数据库。此时已完全恢复。

SQL> RECOVER AUTOMATIC FROM '/u01/arch_temp' DATABASE;
--使用 RECOVER 命令应用重做数据

SQL> ALTER DATABASE OPEN; --打开数据库

对打开的数据库执行完全恢复

如果在数据库打开时出现介质故障,则数据库将继续运行。尝试向其中的数据文件写入数据时,数据文件将自动脱机。对这些数据文件进行查询不会导致其脱机,但是会向发出查询的用户返回错误。
与恢复关闭的数据库类似,首先需要查询需恢复的文件和归档日志。然后,使包含受损数据文件的所有表空间脱机。可使用如下命令完成该操作:
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

USING BACKUP CONTROLFILE

基于取消的不完全恢复

基于取消的不完全恢复与对关闭数据库执行的完全恢复非常相似。差异在于执行 RECOVER 命令的方式;指定 UNTIL CANCEL 子句。此子句将导致恢复过程提示您确认要应用的每个重做日志文件的建议名称。因此,在进行恢复过程中,系统会提示您确认已归档或联机的重做日志文件名,而且对于每个文件名,您

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle创建用户以及备份还原数据.. 下一篇oralce中相关的概念整理

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)