Oracle停机时间及数据库恢复

  • 来源: 编程中国 作者: 若水   2008-04-23/13:28
  • 这里会讨论令Oracle停机时间最小化的步骤。各种形式的停机--计划的或者是非计划的--总是不断地发生,一个DBA应该有正确的备份策略,这样在数据库出现问题时就可以更快地恢复。

    以下是假定的备份策略和数据库的运作条件

    控制文件是镜像的

    数据库运行在archivelog模式

    每个星期都进行冷备份

    每日都进行热备份

    每日都进行一次全数据库导出

    事件1:完整的数据库重构

    在这种情形下,你可以使用全数据库导出或者冷热备份结合的方式来重构数据库。要注意的是无论你选择哪种方式,在线redo log中的事务都会丢失。

    事件2:恢复部分的表空间

    可以使用以下的步骤来恢复:

    1、以restrict模式启动数据库

    2、重新创建表空间

    3、使用最新的全数据库导出来导入,并且使用ignore=y的选项;

    4.关闭并且重新以normal的模式启动数据库实例

    事件3:丢失一般的数据文件

    丢失一般数据文件的恢复步骤根据所丢失的数据文件包含的表空间类型而定;例如:回滚段,用户表空间,索引表空间或者是只读的表空间、你可能会遇到以下的错误:

    . 尝试启动数据库并且碰到错误的信息ORA-1157, ORA-1110,可能还有一个操作系统的错误

    . 尝试以normal或者immediate的模式关闭数据库,可能会碰到ORA-1116, ORA-1110的错误信息,还有一个系统错误

    以下的步骤可以用作恢复:

    1、关闭数据库

    2、由热备份中恢复丢失的数据文件

    3、Startup mount数据库

    4、执行以下的查询来得到所有你的在线redo log文件和它们相应的次序和首次修改号:

     

    SELECT X.GROUP#, MEMBER, SEQUENCE#, FIRST_CHANGE#
    FROM V$LOG X, V$LOGILE Y
    WHERE X.GROUP# = Y.GROUP#;

    5、如果得到的CHANGE#比在线redo log最小的FIRST_CHANGE# 还小,那么该文件不能被完全恢复,你可以有两个选择:

    .如果可以接受丢失最近一次冷备份以来的数据库修改,装入备份并且继续恢复

    .如果不能接受丢失数据库的修改,那么必须重新创建表空间

    6、通过使用存档和在线的redo log来恢复数据文件

    7、打开数据库


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多