ITPub博客

首页 > 数据库 > Oracle > Backup And Recovery User's Guide-在实例失败或SHUTDOWN ABORT后结束备份

Backup And Recovery User's Guide-在实例失败或SHUTDOWN ABORT后结束备份

原创 Oracle 作者:luisedalian 时间:2014-03-02 10:32:24 0 删除 编辑

在实例失败或SHUTDOWN ABORT后结束备份

下面的情形会引起表空间备份失败并且不一致:

n  备份结束后,但没有执行ALTER TABLESPACE…END BACKUP

n  实例失败或SHUTDOWN ABORT中断了备份

在启动时显示的错误信息

ORA-01113: file 12 needs media recovery

ORA-01110: data file 12: '/oracle/dbs/tbs_41.f'

 

当需要从失败中恢复的时候,当试图打开数据文件时,如果数据文件处于备份模式,则数据库不会打开这个数据文件,

直到你执行了一个恢复命令,或直到数据文件已经退出了备份模式。

 

如果数据库提示多个表空间的数据文件需要介质恢复,因为对于这些表空间你忘记了结束备份模式,

则只需要在数据库进入MOUNT状态后,执行ALTER DATABASE END BACKUP命令即可,使所有的数据文件结束备份模式。

 

在高可用性的环境中,并且没有DBA监控数据库的情形下,是不允许用户干预的。

因此需要写一个失败恢复脚本做下面的事情:

①MOUNT数据库

②运行ALTER DATABASE END BACKUP语句

③运行ALTER DATABASE OPEN,允许自动启动。

 

在下列情形下,在自动化的系统崩溃恢复脚本中包含ALTER DABASE END BACKUP语句非常有用:

n  在RAC配置中的所有结点都失败了

n  在cold failover cluster环境(是一个群集环境,但不是RAC,第二个节点在第一个结点失败时,必须mount和恢复数据库)中一个结点失败了

 

也可以采用下面的手动措施(在系统因为表空间处于备份模式而失败时):

n  恢复数据库,避免同时执行END BACKUP语句

n  MOUNT数据库,对于仍处于备份模式的每个表空间执行ALTER TABLESPACE…END BACKUP语句

 

(1)使用ALTER DATABAE END BACKUP语句结束备份模式

当有多个表空间仍处于备份模式时,可以运行ALTER DATABASE END BACKUP语句。

这个命令的主要目的是允许崩溃恢复脚本在没有DBA的干预下可以启动失败的系统。当然也可以手动执行下面的步骤。

练习:使多个表空间同时退出备份模式

--1. MOUNT但不打开数据库

SQL> STARTUP MOUNT

--2. 如果正在手动地执行这些步骤(而不是作为失败恢复脚本的一部分),则要查看v$BACKUP视图

--   列出在数据库被重新启动之前被备份的表空间的数据文件

SQL>  SELECT * FROM V$BACKUP WHERE STATUS = 'ACTIVE';

FILE#      STATUS             CHANGE#    TIME    

---------- ------------------ ---------- ---------

        12 ACTIVE                  20863 25-NOV-02

        13 ACTIVE                  20863 25-NOV-02

        20 ACTIVE                  20863 25-NOV-02

 3 rows selected.

 --3. 使所有当前处于备份模式的数据文件退出备份模式

 --   只有当数据库处于MOUNT状态而不是OPEN状态时,才能执行这个语句

 --   如果数据库已经被打开,则要执行ALTER TABLESPACE... END BACKUP或ALTER DATABASE DATAFILE...END BACKUP

 --   注意:如果已经从备份还原了任何受影响的文件,则不能执行ALTER DATABASE END BACKUP.

 SQL> ALTER DATABASE END BACKUP;

 

(2)使用SQL*Plus RECOVER命令结束备份

ALTER DATABASE END BACKUP语句不是响应联机备份失败的唯一语句,也可以执行SQL*Plus的RECOVER命令。

当你不确定是否有人已经还原了备份的时候,这个方法很有用。

因为如果有人已经还原了备份,则RECOVER命令会使备份更新到最新。

注意:RECOVER方法会慢一些,因为数据库必须从连接备份开始之后产生的日志。

练习:使用SQL*Plus RECOVER命令结束备份

--1. MOUNT数据库

SQL> STARTUP MOUNT

--2. 恢复数据库

SQL> RECOVER DATABASE

--3. 确定没有活动的数据文件

SQL>  SELECT * FROM V$BACKUP WHERE STATUS = 'ACTIVE';

FILE#      STATUS             CHANGE#    TIME    

---------- ------------------ ---------- ---------

0 rows selected.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1097976/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6043805