zoukankan      html  css  js  c++  java
  • (Les16 执行数据库恢复)-表空间恢复

    NOARCHIVELOG模式下丢失了数据文件
        数据库处于NOARCHIVELOG模式时,如果丢失任何数据文件,执行以下步骤
            1.如果实例尚未关闭,请关闭实例
            2.从备份还原整个数据库,包括所有数据文件和控制文件
            3.打开数据库
            4.让用户重新输入自上次备份以来所做的所有更改
     
    ARCHIVELOG模式下丢失了非关键性数据文件(SYSTEM,UNDO除外)
            仅仅恢复当前数据文件不用整库恢复,不需要停机
            1.数据文件离线
            2.restore数据文件,介质恢复
            3.recover事务
            4.数据文件联机
     
    ARCHIVELOG模式下丢失了关键性数据文件(SYSTEM,UNDO...)
            数据库关键性数据文件丢失,需要停机恢复
            1.实例可能会也可能不会自动关闭。如果未自动关闭,请使用SHUTDOWN ABORT关闭实例
            2.装载数据库,MOUNT
            3.还原并恢复缺失的数据文件,restore datafile/database 
            4.recover datafile/database
            5.打开数据库
     
     
     
    归档模式下恢复非关键表空间
     
    set linesize 300
    set pagesize 600
    col file_name format a50
    col tablespace_name format a20
    select tablespace_name,file_name from dba_data_files;
     
     
    创建一个非关键表空间进行测试
     
    create tablespace redo_data  datafile '/u01/app/oracle/oradata/xiocpt0/redo_data01.dbf' size 32M autoextend on next 32M maxsize 1024M;
     
     
     
    SQL> create tablespace redo_data  datafile '/u01/app/oracle/oradata/xiocpt0/redo_data01.dbf' size 32M autoextend on next 32M maxsize 1024M;
     
    Tablespace created.
     
    SQL> set linesize 300
    set pagesize 600
    col file_name format a50
    col tablespace_name format a20
    select tablespace_name,file_name from dba_data_files;
     
     
    TABLESPACE_NAME      FILE_NAME
    -------------------- --------------------------------------------------
    USERS                /u01/app/oracle/oradata/xiocpt0/users01.dbf
    UNDOTBS1             /u01/app/oracle/oradata/xiocpt0/undotbs01.dbf
    SYSAUX               /u01/app/oracle/oradata/xiocpt0/sysaux01.dbf
    SYSTEM               /u01/app/oracle/oradata/xiocpt0/system01.dbf
    REDO_DATA            /u01/app/oracle/oradata/xiocpt0/redo_data01.dbf
     
     
     
     
     
    BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
     
    对数据进行一次完全备份
     
    RMAN> shutdown immediate
    RMAN> startup mount
    RMAN> run
    {
    allocate channel c1 device type disk format '/u01/backup/backup01_%U' ;
    backup as compressed backupset database;
    backup current controlfile;
    alter database open;
    }
     
     
    RMAN> list backup;
     
     
    List of Backup Sets
    ===================
     
     
    BS Key  Type LV Size       Device Type Elapsed Time Completion Time
    ------- ---- -- ---------- ----------- ------------ ---------------
    7       Full    321.23M    DISK        00:00:38     22-MAY-18
            BP Key: 7   Status: AVAILABLE  Compressed: YES  Tag: TAG20180522T151208
            Piece Name: /u01/backup/backup01_08t3hoq8_1_1
      List of Datafiles in backup set 7
      File LV Type Ckp SCN    Ckp Time  Name
      ---- -- ---- ---------- --------- ----
      1       Full 1058982    22-MAY-18 /u01/app/oracle/oradata/xiocpt0/system01.dbf
      2       Full 1058982    22-MAY-18 /u01/app/oracle/oradata/xiocpt0/sysaux01.dbf
      3       Full 1058982    22-MAY-18 /u01/app/oracle/oradata/xiocpt0/undotbs01.dbf
      4       Full 1058982    22-MAY-18 /u01/app/oracle/oradata/xiocpt0/users01.dbf
      5       Full 1058982    22-MAY-18 /u01/app/oracle/oradata/xiocpt0/redo_data01.dbf
     
    BS Key  Type LV Size       Device Type Elapsed Time Completion Time
    ------- ---- -- ---------- ----------- ------------ ---------------
    8       Full    1.05M      DISK        00:00:03     22-MAY-18
            BP Key: 8   Status: AVAILABLE  Compressed: YES  Tag: TAG20180522T151208
            Piece Name: /u01/backup/backup01_09t3horl_1_1
      SPFILE Included: Modification time: 22-MAY-18
      SPFILE db_unique_name: XIOCPT0
      Control File Included: Ckp SCN: 1058982      Ckp time: 22-MAY-18
     
    BS Key  Type LV Size       Device Type Elapsed Time Completion Time
    ------- ---- -- ---------- ----------- ------------ ---------------
    9       Full    9.64M      DISK        00:00:01     22-MAY-18
            BP Key: 9   Status: AVAILABLE  Compressed: NO  Tag: TAG20180522T151257
            Piece Name: /u01/backup/backup01_0at3horp_1_1
      Control File Included: Ckp SCN: 1058982      Ckp time: 22-MAY-18
     
     
     
    创建表并指定表空间
     
    SQL> create table REDO_DATA(
      2  id number,
      3  name varchar2(20)
      4  )
      5  tablespace REDO_DATA;
     
    Table created.
     
    SQL> declare
    v_count number;
     
    begin
      for i in 1..1000 loop
      insert into redo_data values(i,'name0'||i);
      end loop;
    end;
    /  2    3    4    5    6    7    8    9
     
    PL/SQL procedure successfully completed.
     
    SQL> commit;
     
    Commit complete.
     
    SQL> select count(*) from REDO_DATA;
     
      COUNT(*)
    ----------
          1000
     
     
     
     
    恢复非关键表空间
     
     
    sql 'alter tablespace redo_data offline';---离线需恢复的表空间
     
     
    restore tablespace redo_data;---还原表空间
    recover tablespace redo_data;---恢复表空间,期间的事务进行应用
      
      
    sql 'alter tablespace redo_data online';---恢复完成,将表空间在线
     
     
    删除数据文件
    SQL> !rm -rf /u01/app/oracle/oradata/xiocpt0/redo_data01.dbf
     
    SQL> select count(*) from REDO_DATA;
     
      COUNT(*)
    ----------
          1000
     
    SQL> commit;
     
    Commit complete.
     
    SQL> declare
    v_count number;
     
    begin
      for i in 1..1000 loop
      insert into redo_data values(i,'name0'||i);
      end loop;
    end;
    /  2    3    4    5    6    7    8    9
     
    PL/SQL procedure successfully completed.
     
    SQL> commit;
     
    Commit complete.
     
    SQL>  select count(*) from REDO_DATA;
     
      COUNT(*)
    ----------
          2000
     
    SQL> !ls -l /u01/app/oracle/oradata/xiocpt0/redo_data01.dbf
    ls: cannot access /u01/app/oracle/oradata/xiocpt0/redo_data01.dbf: No such file or directory
     
    SQL> select table_name ,tablespace_name from dba_tables where table_name='REDO_DATA';
     
    TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ --------------------
    REDO_DATA                      REDO_DATA
     
    SQL> alter system switch logfile;
     
    System altered.
     
    SQL>  alter system checkpoint;
     
    System altered.
     
    SQL> select count(*) from REDO_DATA;
     
      COUNT(*)
    ----------
          2000
     
    SQL> declare
    v_count number;
     
    begin
      for i in 1..1000 loop
      insert into redo_data values(i,'name0'||i);
      end loop;
    end;
    /  2    3    4    5    6    7    8    9
     
    PL/SQL procedure successfully completed.
     
    SQL> declare
    v_count number;
     
    begin
      for i in 1..1000 loop
      insert into redo_data values(i,'name0'||i);
      end loop;
    end;
    /  2    3    4    5    6    7    8    9
     
    PL/SQL procedure successfully completed.
     
    SQL> declare
    v_count number;
     
    begin
      for i in 1..1000 loop
      insert into redo_data values(i,'name0'||i);
      end loop;
    end;
    /  2    3    4    5    6    7    8    9
     
    PL/SQL procedure successfully completed.
     
    SQL> commit;
     
    Commit complete.
     
    SQL> !ls -l /u01/app/oracle/oradata/xiocpt0/redo_data01.dbf
    ls: cannot access /u01/app/oracle/oradata/xiocpt0/redo_data01.dbf: No such file or directory
     
    SQL> select count(*) from REDO_DATA;
    select count(*) from REDO_DATA
                         *
    ERROR at line 1:
    ORA-00376: file 5 cannot be read at this time
    ORA-01110: data file 5: '/u01/app/oracle/oradata/xiocpt0/redo_data01.dbf'
     
     
    开始执行还原/恢复操作
     
    RMAN> sql 'alter tablespace redo_data offline';
     
    sql statement: alter tablespace redo_data offline
     
    RMAN>
    restore tablespace redo_data;
    RMAN>
     
    Starting restore at 22-MAY-18
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=19 device type=DISK
     
    channel ORA_DISK_1: starting datafile backup set restore
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set
    channel ORA_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/xiocpt0/redo_data01.dbf
    channel ORA_DISK_1: reading from backup piece /u01/backup/backup01_08t3hoq8_1_1
    channel ORA_DISK_1: piece handle=/u01/backup/backup01_08t3hoq8_1_1 tag=TAG20180522T151208
    channel ORA_DISK_1: restored backup piece 1
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
    Finished restore at 22-MAY-18
     
    RMAN>   recover tablespace redo_data;
     
    Starting recover at 22-MAY-18
    using channel ORA_DISK_1
     
    starting media recovery
     
    archived log for thread 1 with sequence 74 is already on disk as file /u01/archive/arch_976375926_1_74.arc
    archived log for thread 1 with sequence 75 is already on disk as file /u01/archive/arch_976375926_1_75.arc
    archived log for thread 1 with sequence 76 is already on disk as file /u01/archive/arch_976375926_1_76.arc
    archived log for thread 1 with sequence 77 is already on disk as file /u01/archive/arch_976375926_1_77.arc
    archived log for thread 1 with sequence 78 is already on disk as file /u01/archive/arch_976375926_1_78.arc
    archived log for thread 1 with sequence 79 is already on disk as file /u01/archive/arch_976375926_1_79.arc
    archived log for thread 1 with sequence 80 is already on disk as file /u01/archive/arch_976375926_1_80.arc
    archived log for thread 1 with sequence 81 is already on disk as file /u01/archive/arch_976375926_1_81.arc
    archived log for thread 1 with sequence 82 is already on disk as file /u01/archive/arch_976375926_1_82.arc
    archived log for thread 1 with sequence 83 is already on disk as file /u01/archive/arch_976375926_1_83.arc
    archived log for thread 1 with sequence 84 is already on disk as file /u01/archive/arch_976375926_1_84.arc
    archived log for thread 1 with sequence 85 is already on disk as file /u01/archive/arch_976375926_1_85.arc
    archived log file name=/u01/archive/arch_976375926_1_74.arc thread=1 sequence=74
    archived log file name=/u01/archive/arch_976375926_1_75.arc thread=1 sequence=75
    archived log file name=/u01/archive/arch_976375926_1_76.arc thread=1 sequence=76
    archived log file name=/u01/archive/arch_976375926_1_77.arc thread=1 sequence=77
    archived log file name=/u01/archive/arch_976375926_1_78.arc thread=1 sequence=78
    archived log file name=/u01/archive/arch_976375926_1_79.arc thread=1 sequence=79
    archived log file name=/u01/archive/arch_976375926_1_80.arc thread=1 sequence=80
    media recovery complete, elapsed time: 00:00:00
    Finished recover at 22-MAY-18
     
    RMAN>   sql 'alter tablespace redo_data online';
     
    sql statement: alter tablespace redo_data online
     
     
     
    SQL>  select count(*) from REDO_DATA;
     
      COUNT(*)
    ----------
          5000
     
     
    归档模式下恢复关键表空间
        
        数据库关键性数据文件丢失,需要停机恢复
            1.实例可能会也可能不会自动关闭。如果未自动关闭,请使用SHUTDOWN ABORT关闭实例
            2.装载数据库,MOUNT
            3.还原并恢复缺失的数据文件,restore datafile/database 
            4.recover datafile/database
            5.打开数据库
     
    SQL> set linesize 300
    set pagesize 600
    col file_name format a50
    col tablespace_name format a20
    select tablespace_name,file_name from dba_data_files;SQL> SQL> SQL> SQL>
     
    TABLESPACE_NAME      FILE_NAME
    -------------------- --------------------------------------------------
    USERS                /u01/app/oracle/oradata/xiocpt0/users01.dbf
    UNDOTBS1             /u01/app/oracle/oradata/xiocpt0/undotbs01.dbf
    SYSAUX               /u01/app/oracle/oradata/xiocpt0/sysaux01.dbf
    SYSTEM               /u01/app/oracle/oradata/xiocpt0/system01.dbf
    REDO_DATA            /u01/app/oracle/oradata/xiocpt0/redo_data01.dbf
     
    SQL>
    SQL> !rm -rf /u01/app/oracle/oradata/xiocpt0/system01.dbf
     
     
    startup mount ---将数据库启动到mount
    restore tablespace system;---指定关键表空间进行还原
    recover tablespace system;---恢复表空间
    sql 'alter database open';---将数据库打开
     
     
    [oracle@t-xi-oracle01 ~]$ rman  target /
     
    Recovery Manager: Release 11.2.0.4.0 - Production on Tue May 22 15:30:33 2018
     
    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
     
    connected to target database (not started)
     
    RMAN> startup mount
     
    Oracle instance started
    database mounted
     
    Total System Global Area     409194496 bytes
     
    Fixed Size                     2253744 bytes
    Variable Size                322964560 bytes
    Database Buffers              79691776 bytes
    Redo Buffers                   4284416 bytes
     
    RMAN> restore tablespace system;
     
    Starting restore at 22-MAY-18
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=18 device type=DISK
     
    channel ORA_DISK_1: starting datafile backup set restore
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set
    channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/xiocpt0/system01.dbf
    channel ORA_DISK_1: reading from backup piece /u01/backup/backup01_08t3hoq8_1_1
    channel ORA_DISK_1: piece handle=/u01/backup/backup01_08t3hoq8_1_1 tag=TAG20180522T151208
    channel ORA_DISK_1: restored backup piece 1
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:45
    Finished restore at 22-MAY-18
     
    RMAN> recover tablespace system;
     
    Starting recover at 22-MAY-18
    using channel ORA_DISK_1
     
    starting media recovery
     
    archived log for thread 1 with sequence 74 is already on disk as file /u01/archive/arch_976375926_1_74.arc
    archived log for thread 1 with sequence 75 is already on disk as file /u01/archive/arch_976375926_1_75.arc
    archived log for thread 1 with sequence 76 is already on disk as file /u01/archive/arch_976375926_1_76.arc
    archived log for thread 1 with sequence 77 is already on disk as file /u01/archive/arch_976375926_1_77.arc
    archived log for thread 1 with sequence 78 is already on disk as file /u01/archive/arch_976375926_1_78.arc
    archived log for thread 1 with sequence 79 is already on disk as file /u01/archive/arch_976375926_1_79.arc
    archived log for thread 1 with sequence 80 is already on disk as file /u01/archive/arch_976375926_1_80.arc
    archived log for thread 1 with sequence 81 is already on disk as file /u01/archive/arch_976375926_1_81.arc
    archived log for thread 1 with sequence 82 is already on disk as file /u01/archive/arch_976375926_1_82.arc
    archived log for thread 1 with sequence 83 is already on disk as file /u01/archive/arch_976375926_1_83.arc
    archived log for thread 1 with sequence 84 is already on disk as file /u01/archive/arch_976375926_1_84.arc
    archived log for thread 1 with sequence 85 is already on disk as file /u01/archive/arch_976375926_1_85.arc
    archived log for thread 1 with sequence 86 is already on disk as file /u01/archive/arch_976375926_1_86.arc
    archived log file name=/u01/archive/arch_976375926_1_74.arc thread=1 sequence=74
    archived log file name=/u01/archive/arch_976375926_1_75.arc thread=1 sequence=75
    archived log file name=/u01/archive/arch_976375926_1_76.arc thread=1 sequence=76
    archived log file name=/u01/archive/arch_976375926_1_77.arc thread=1 sequence=77
    archived log file name=/u01/archive/arch_976375926_1_78.arc thread=1 sequence=78
    archived log file name=/u01/archive/arch_976375926_1_79.arc thread=1 sequence=79
    archived log file name=/u01/archive/arch_976375926_1_80.arc thread=1 sequence=80
    archived log file name=/u01/archive/arch_976375926_1_81.arc thread=1 sequence=81
    media recovery complete, elapsed time: 00:00:00
    Finished recover at 22-MAY-18
     
    RMAN> sql 'alter database open';
     
    sql statement: alter database open
     
     
     
     
     
     
  • 相关阅读:
    kafka 简单调试
    audit调优
    html使用的特殊符号< &gt: &等 意义对照
    nohup /dev/null 2>&1 含义详解
    K8S etcd参数优化
    Linux下安装VMware Tools 的方法
    PHP操作MySQL数据库5个步骤
    Win7下mysql root账户登录提示:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)解决方案
    VS 报cmath(19): error C2061: 语法错误: 标识符“acosf” 错误
    win7 装了VB虚拟机 开始挺好用 后来突然就打不开了 提示如下错误:(如图)创建 COM 对象失败.
  • 原文地址:https://www.cnblogs.com/also-brook/p/9072904.html
Copyright © 2011-2022 走看看