zoukankan      html  css  js  c++  java
  • Performing User-Managed Database-18.7、Performing Complete User-Managed Media Recovery

    18.7、Performing Complete User-Managed Media Recovery
    完毕一致性备份,把数据库恢复到当前的scn是最好的结果。能够恢复整个数据库。恢复单个表空间。或恢复数据文件。一致性恢复不须要resetlogs打开数据库,非一致性恢复须要resetlogs打开数据库。Backup and Recovery Basics提供了关于介质恢复的信息。

    18.7.1、Performing Closed Database Recovery
    能够在一个操作中恢复全部损坏的数据文件。也能够分开操作恢复每一个损坏的数据文件。

    18.7.1.1、Preparing for Closed Database Recovery
    (1)关闭数据库,检查出现故障的介质设备
    (2)假设引起介质失败的问题是暂时的,假设数据没有损坏(比方,磁盘或控制器掉电),不须要介质恢复:仅仅需启动数据库。又一次開始操作。

    假设不能修复,就进行下面步骤

    18.7.1.2、Restoring Backups of the Damaged or Missing Files
    (1)推断哪些数据文件须要恢复
    (2)找到损坏的数据文件的近期备份。只还原损坏的数据文件:不要还原没有损坏的数据文件或不论什么重做日志文件。假设没有不论什么备份。只能创建一个数据文件(有归档)
    alter database create datafile 'xxx' as 'xxx' size xxx reuse
    (3)使用操作系统命令把数据文件还原到默认位置或新的位置。
    alter database rename file 'xxx' to 'xxx';

    18.7.1.3、Recovering the Database
    (1)使用系统管理员权限连接数据库,启动数据库到mount
    (2)查询v$datafile获得数据文件名称和状态
    (3)须要恢复的数据文件必须是在线的,除了offline normal的表空间或read-only表空间
    select 'alter dabase datafile ' || name || ' online;' from  v$datafile;
    (4)运行recover database,recover tablespace xxx,recover datafile 'xxx'等语句
    (5)没有自己主动地恢复,必须接受或拒绝每一个指出的日志。假设自己主动地恢复,数据库自己主动地应用日志。


    (6)介质恢复完毕,数据库返回:Media recovery complete。


    (7)alter database open

    18.7.2、Performing Datafile Recovery in an Open Database
    当数据库处于打开状态时,出现介质失败。不能被写时返回错误。一般表空间的仅仅是损坏的数据文件离线,不能查询时返回错误,一般表空间的仅仅是损坏的数据文件不会离线。
    当数据库处于打开状态时,该恢复过程不能用做system表空间的全然介质恢复。

    假设system表空间的数据文件损坏,数据库自己主动关闭。

    18.7.2.1、Preparing for Open Database Recovery
    (1)数据库处于打开,发现须要恢复,把包括损坏的数据文件的表空间离线。


    (2)假设引起介质失败的问题是暂时的,假设数据没有损坏(比方。磁盘或控制器掉电),不须要介质恢复:仅仅需启动数据库,又一次開始操作。假设不能修复,就进行下面步骤

    18.7.2.2、Restoring Backups of the Inaccessible Datafiles
    (1)推断哪些数据文件须要恢复
    (2)找到损坏的数据文件的近期备份。

    只还原损坏的数据文件:不要还原没有损坏的数据文件或不论什么重做日志文件。假设没有不论什么备份,只能创建一个数据文件(有归档)
    alter database create datafile 'xxx' as 'xxx' size xxx reuse
    SQL> alter database create datafile '/oracle/oradata/boss/testtbs04_01.dbf' as '/oracle/oradata/boss/testtbs04_01.dbf' size 10m reuse;
    (3)使用操作系统命令把数据文件还原到默认位置或新的位置。
    alter database rename file 'xxx' to 'xxx';

    18.7.2.3、Recovering Offline Tablespaces in an Open Database
    (1)运行recover database,recover tablespace xxx,recover datafile 'xxx'等语句
    (2)没有自己主动地恢复,必须接受或拒绝每一个指出的日志。假设自己主动地恢复,数据库自己主动地应用日志。
    (3)介质恢复完毕,数据库返回:Media recovery complete。


    SQL> recover automatic tablespace testtbs04; 
    (4)alter database open

    模拟1、创建表空间testtbs04,创建一个表,删除相应的数据文件,做关闭数据库的恢复
    (1)
    SQL> create tablespace testtbs04
      2    datafile '/oracle/oradata/boss/testtbs04_01.dbf' size 10m
      3    autoextend on next 1m maxsize unlimited
      4    logging
      5    extent management local autoallocate
      6    blocksize 8k
      7    segment space management auto
      8    flashback on;

    (2)
    SQL> create table test04(id number, name varchar2(30)) tablespace testtbs04;
    SQL> insert into test04 values(1, 'xxxxx');
    SQL> insert into test04 values(2, 'yyyyy');
    SQL> commit;

    (3)
    SQL> select group#,members,sequence#,archived,status,first_change# from v$log;

        GROUP#    MEMBERS  SEQUENCE# ARC STATUS           FIRST_CHANGE#
    ---------- ---------- ---------- --- ---------------- -------------
             1          1          0 YES UNUSED                       0
             2          1          0 YES UNUSED                       0
             3          1          1 NO  CURRENT                 697986

    SQL> alter system switch logfile;
    SQL> alter system switch logfile;
    SQL> alter system switch logfile;
    SQL> select group#,members,sequence#,archived,status,first_change# from v$log;

        GROUP#    MEMBERS  SEQUENCE# ARC STATUS           FIRST_CHANGE#
    ---------- ---------- ---------- --- ---------------- -------------
             1          1          2 YES INACTIVE                707835
             2          1          3 YES INACTIVE                707837
             3          1          4 NO  CURRENT                 707840
    (4)
    $ rm -rf testtbs04_01.dbf

    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.

    SQL> startup open;

    SQL> col "文件名称" for a40;
    SQL> col "表空间名" for a10
    SQL> set linesize 150
    SQL>
    select
      ts.name "表空间名"
      , df.file# "文件号"
      , df.checkpoint_change# "检查点"
      , df.name "文件名称"
      , df.status "在线状态"
      , rf.error "恢复原因"
      , rf.change# "系统变更号"
      , rf.time
      from v$tablespace ts,v$datafile df,v$recover_file rf
    where ts.ts#=df.ts# and df.file#=rf.file#
    order by df.file#;

    SQL> select
      2    ts.name "表空间名"
      3    , df.file# "文件号"
      4    , df.checkpoint_change# "检查点"
      5    , df.name "文件名称"
      6    , df.status "在线状态"
      7    , rf.error "恢复原因"
      8    , rf.change# "系统变更号"
      9    , rf.time
     10    from v$tablespace ts,v$datafile df,v$recover_file rf
     11  where ts.ts#=df.ts# and df.file#=rf.file#
     12  order by df.file#;

    表空间名       文件号     检查点 文件名称                                   在线状  恢复原因           系统变更号 TIME
    ---------- ---------- ---------- ---------------------------------------- ------- ------------------ ---------- ------------
    TESTTBS02           8     652783 /oracle/oradata/boss/testtbs02_01.dbf    OFFLINE OFFLINE NORMAL              0
    TESTTBS04          10     707840 /oracle/oradata/boss/testtbs04_01.dbf    ONLINE  FILE NOT FOUND              0

    (5)
    SQL> alter database create datafile '/oracle/oradata/boss/testtbs04_01.dbf' as '/oracle/oradata/boss/testtbs04_01.dbf' size 10m reuse;

    SQL> select file#,name,status,CHECKPOINT_CHANGE#,recover from v$datafile_header where file#=10;

         FILE# NAME                                     STATUS  CHECKPOINT_CHANGE# REC
    ---------- ---------------------------------------- ------- ------------------ ---
            10 /oracle/oradata/boss/testtbs04_01.dbf    ONLINE              707602 YES

    (6)
    SQL> recover automatic tablespace testtbs04; 
    Media recovery complete.

    SQL> alter database open;

    SQL> select * from test04;

            ID NAME
    ---------- ----------------------------------------
             1 xxxxx
             2 yyyyy

  • 相关阅读:
    线段树(单点更新) HDOJ 2795 Billboard
    线段树(单点更新) HDU 1754 I Hate It
    线段树(单点更新)/树状数组 HDOJ 1166 敌兵布阵
    递推DP URAL 1031 Railway Tickets
    记忆化搜索(DFS+DP) URAL 1223 Chernobyl’ Eagle on a Roof
    递推DP URAL 1244 Gentlemen
    DFS水题 URAL 1152 False Mirrors
    记忆化搜索(DFS+DP) URAL 1501 Sense of Beauty
    DP+高精度 URAL 1036 Lucky Tickets
    DP/最短路 URAL 1741 Communication Fiend
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7242219.html
Copyright © 2011-2022 走看看