ITPub博客

首页 > 数据库 > Oracle > [Rman]Rman Level012备份实验

[Rman]Rman Level012备份实验

原创 Oracle 作者:梓沐 时间:2016-02-15 10:05:13 0 删除 编辑
备份脚本参考:http://blog.csdn.net/u011364306/article/details/49994135
以下实验和结论都是基于Rman的差异备份
查询归档是否开启
  1. SQL> archive log list
    Database log mode           Archive Mode
    Automatic archival           Enabled
    Archive destination           /u01/oracle/archive/
    Oldest online log sequence     23
    Next log sequence to archive   25
    Current log sequence           25

查询当前Rman配置
  1. RMAN> show all;

    using target database control file instead of recovery catalog
    RMAN configuration parameters for database with db_unique_name NEAL are:
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
    CONFIGURE BACKUP OPTIMIZATION OFF; # default
    CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
    CONFIGURE CONTROLFILE AUTOBACKUP ON;
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/file/backup/rman/controlfile_%F';
    CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
    CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
    CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
    CONFIGURE MAXSETSIZE TO UNLIMITED; # default
    CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
    CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
    CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
    CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
    CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/oracle/product/11.2.0/db_1/dbs/snapcf_neal.f'; # default

为了试验方便,将Rman中的备份清除
  1. RMAN> list backup;

    specification does not match any backup in the repository

修改系统时间到周日,进行模拟Level0备份
  1. [root@cancer /]# date -s "2015-11-15 12:00:00"
    Sun Nov 15 12:00:00 CST 2015

进入scott用户创建测试表和数据
  1. SQL> conn scott/tiger;
    Connected.

    --创建测试表t
    SQL> create table t(a int);

    Table created.

    --插入一条测试数据
    SQL> insert into t values(1);

    1 row created.

    SQL> commit;

    Commit complete

执行Level0级备份脚本
  1. [oracle@cancer onlinelog]$ sh /server/scripts/rman_bak_level0.sh  --执行0级备份脚本

    Recovery Manager: Release 11.2.0.4.0 - Production on Sun Nov 15 12:03:59 2015

    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

    connected to target database: NEAL (DBID=4033362200)

    RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11>
    using target database control file instead of recovery catalog     --没有指定catalog所以用的controlfile
    allocated channel: d1                  --分配通道d1(脚本中指定)
    channel d1: SID=22 device type=DISK

    allocated channel: d2
    channel d2: SID=32 device type=DISK    --分配通道d2(脚本中指定)

    Starting backup at 15-NOV-15           --备份开始
    channel d1: starting incremental level 0 datafile backup set
    channel d1: specifying datafile(s) in backup set    --备份通道d1备份2个数据文件
    input datafile file number=00001 name=/u01/oracle/oradata/neal/system01.dbf
    input datafile file number=00004 name=/u01/oracle/oradata/neal/users01.dbf
    channel d1: starting piece 1 at 15-NOV-15
    channel d2: starting incremental level 0 datafile backup set
    channel d2: specifying datafile(s) in backup set    --备份通道d2备份3个数据文件
    input datafile file number=00002 name=/u01/oracle/oradata/neal/sysaux01.dbf
    input datafile file number=00005 name=/u01/oracle/oradata/neal/test01.dbf
    input datafile file number=00003 name=/u01/oracle/oradata/neal/undotbs01.dbf
    channel d2: starting piece 1 at 15-NOV-15
    channel d1: finished piece 1 at 15-NOV-15
    piece handle=/file/backup/rman/level0_NEAL_136_1_48qmaqdh.bkp tag=TAG20151115T120400 comment=NONE  --备份集1路径
    channel d1: backup set complete, elapsed time: 00:00:35
    channel d2: finished piece 1 at 15-NOV-15
    piece handle=/file/backup/rman/level0_NEAL_137_1_49qmaqdh.bkp tag=TAG20151115T120400 comment=NONE  --备份集2路径
    channel d2: backup set complete, elapsed time: 00:00:55
    Finished backup at 15-NOV-15

    Starting Control File and SPFILE Autobackup at 15-NOV-15           --备份controlfile和spfile
    piece handle=/file/backup/rman/controlfile_c-4033362200-20151115-00 comment=NONE   --备份集路径
    Finished Control File and SPFILE Autobackup at 15-NOV-15

    sql statement: alter system archive log current       --当前日志进行归档

    Starting backup at 15-NOV-15
    current log archived                        
    channel d1: starting archived log backup set          --开始备份归档日志
    channel d1: specifying archived log(s) in backup set
    input archived log thread=1 sequence=23 RECID=92 STAMP=896618744
    input archived log thread=1 sequence=24 RECID=93 STAMP=896620892
    channel d1: starting piece 1 at 15-NOV-15
    channel d2: starting archived log backup set
    channel d2: specifying archived log(s) in backup set
    input archived log thread=1 sequence=25 RECID=94 STAMP=895838703
    input archived log thread=1 sequence=26 RECID=95 STAMP=895838703
    channel d2: starting piece 1 at 15-NOV-15
    channel d1: finished piece 1 at 15-NOV-15
    piece handle=/file/backup/rman/log_NEAL_139_1_4bqmaqff.bkp tag=TAG20151115T120503 comment=NONE
    channel d1: backup set complete, elapsed time: 00:00:03
    channel d1: deleting archived log(s)                  --删除已备份的输入归档日志
    archived log file name=/u01/oracle/archive/1_23_896142292.dbf RECID=92 STAMP=896618744
    archived log file name=/u01/oracle/archive/1_24_896142292.dbf RECID=93 STAMP=896620892
    channel d2: finished piece 1 at 15-NOV-15
    piece handle=/file/backup/rman/log_NEAL_140_1_4cqmaqff.bkp tag=TAG20151115T120503 comment=NONE
    channel d2: backup set complete, elapsed time: 00:00:03
    channel d2: deleting archived log(s)
    archived log file name=/u01/oracle/archive/1_25_896142292.dbf RECID=94 STAMP=895838703
    archived log file name=/u01/oracle/archive/1_26_896142292.dbf RECID=95 STAMP=895838703
    Finished backup at 15-NOV-15

    Starting Control File and SPFILE Autobackup at 15-NOV-15
    piece handle=/file/backup/rman/controlfile_c-4033362200-20151115-01 comment=NONE
    Finished Control File and SPFILE Autobackup at 15-NOV-15

    crosschecked backup piece: found to be 'AVAILABLE'              --crosscheck备份文件
    backup piece handle=/file/backup/rman/level0_NEAL_136_1_48qmaqdh.bkp RECID=126 STAMP=895838641
    crosschecked backup piece: found to be 'AVAILABLE'
    backup piece handle=/file/backup/rman/level0_NEAL_137_1_49qmaqdh.bkp RECID=127 STAMP=895838671
    crosschecked backup piece: found to be 'AVAILABLE'
    backup piece handle=/file/backup/rman/controlfile_c-4033362200-20151115-00 RECID=128 STAMP=895838696
    crosschecked backup piece: found to be 'AVAILABLE'
    backup piece handle=/file/backup/rman/log_NEAL_140_1_4cqmaqff.bkp RECID=129 STAMP=895838703
    crosschecked backup piece: found to be 'AVAILABLE'
    backup piece handle=/file/backup/rman/log_NEAL_139_1_4bqmaqff.bkp RECID=130 STAMP=895838703
    crosschecked backup piece: found to be 'AVAILABLE'
    backup piece handle=/file/backup/rman/controlfile_c-4033362200-20151115-01 RECID=131 STAMP=895838707
    Crosschecked 6 objects


    RMAN retention policy will be applied to the command
    RMAN retention policy is set to recovery window of 7 days
    no obsolete backups found

    released channel: d1                        --释放通道

    released channel: d2

    RMAN>

    Recovery Manager complete.

更改系统时间到周一,进行模拟Level2备份

  1. [root@cancer rman]# date -s "2015-11-16 12:00:00"
  2. Mon Nov 16 12:00:00 CST 2015
用scott用户继续插入实验数据
  1. SQL> insert into t values(2);

    1 row created.

    SQL> commit;

    Commit complete.

执行Level2备份脚本
  1. [oracle@cancer onlinelog]$ sh /server/scripts/rman_bak_level2.sh

    Recovery Manager: Release 11.2.0.4.0 - Production on Mon Nov 16 12:01:05 2015

    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

    connected to target database: NEAL (DBID=4033362200)

    RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11>
    using target database control file instead of recovery catalog
    allocated channel: d1
    channel d1: SID=43 device type=DISK

    allocated channel: d2
    channel d2: SID=38 device type=DISK

    Starting backup at 16-NOV-15
    channel d1: starting incremental level 2 datafile backup set
    channel d1: specifying datafile(s) in backup set
    input datafile file number=00001 name=/u01/oracle/oradata/neal/system01.dbf
    input datafile file number=00004 name=/u01/oracle/oradata/neal/users01.dbf
    channel d1: starting piece 1 at 16-NOV-15
    channel d2: starting incremental level 2 datafile backup set
    channel d2: specifying datafile(s) in backup set
    input datafile file number=00002 name=/u01/oracle/oradata/neal/sysaux01.dbf
    input datafile file number=00005 name=/u01/oracle/oradata/neal/test01.dbf
    input datafile file number=00003 name=/u01/oracle/oradata/neal/undotbs01.dbf
    channel d2: starting piece 1 at 16-NOV-15
    channel d1: finished piece 1 at 16-NOV-15
    piece handle=/file/backup/rman/level2_NEAL_142_1_4eqmdek2.bkp tag=TAG20151116T120106 comment=NONE
    channel d1: backup set complete, elapsed time: 00:00:35
    channel d2: finished piece 1 at 16-NOV-15
    piece handle=/file/backup/rman/level2_NEAL_143_1_4fqmdek2.bkp tag=TAG20151116T120106 comment=NONE
    channel d2: backup set complete, elapsed time: 00:00:35
    Finished backup at 16-NOV-15

    sql statement: alter system archive log current

    Starting backup at 16-NOV-15

    ......

    crosschecked backup piece: found to be 'AVAILABLE'
    backup piece handle=/file/backup/rman/level0_NEAL_136_1_48qmaqdh.bkp RECID=126 STAMP=895838641
    ......


更改系统时间到周三,进行模拟Level1备份
  1. [root@cancer rman]# date -s "2015-11-18 12:00:00"
  2. Wed Nov 16 12:00:00 CST 2015
用scott用户继续插入实验数据
  1. SQL> insert into t values(3);

    1 row created.

    SQL> commit;

    Commit complete.

执行Level1备份脚本
  1. [oracle@cancer onlinelog]$ sh /server/scripts/rman_bak_level1.sh

    Recovery Manager: Release 11.2.0.4.0 - Production on Tue Nov 17 12:00:05 2015

    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

    connected to target database: NEAL (DBID=4033362200)

    RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11>
    using target database control file instead of recovery catalog
    allocated channel: d1
    channel d1: SID=22 device type=DISK

    allocated channel: d2
    channel d2: SID=32 device type=DISK

    Starting backup at 17-NOV-15
    channel d1: starting incremental level 1 datafile backup set
    channel d1: specifying datafile(s) in backup set
    input datafile file number=00001 name=/u01/oracle/oradata/neal/system01.dbf
    input datafile file number=00004 name=/u01/oracle/oradata/neal/users01.dbf
    channel d1: starting piece 1 at 17-NOV-15
    channel d2: starting incremental level 1 datafile backup set
    channel d2: specifying datafile(s) in backup set
    input datafile file number=00002 name=/u01/oracle/oradata/neal/sysaux01.dbf
    input datafile file number=00005 name=/u01/oracle/oradata/neal/test01.dbf
    input datafile file number=00003 name=/u01/oracle/oradata/neal/undotbs01.dbf
    channel d2: starting piece 1 at 17-NOV-15
    channel d1: finished piece 1 at 17-NOV-15
    piece handle=/file/backup/rman/level1_NEAL_148_1_4kqmg2u6.bkp tag=TAG20151117T120006 comment=NONE
    channel d1: backup set complete, elapsed time: 00:00:35
    channel d2: finished piece 1 at 17-NOV-15
    piece handle=/file/backup/rman/level1_NEAL_149_1_4lqmg2u6.bkp tag=TAG20151117T120006 comment=NONE
    channel d2: backup set complete, elapsed time: 00:00:35
    Finished backup at 17-NOV-15

    Starting Control File and SPFILE Autobackup at 17-NOV-15
    piece handle=/file/backup/rman/controlfile_c-4033362200-20151117-00 comment=NONE
    Finished Control File and SPFILE Autobackup at 17-NOV-15

    sql statement: alter system archive log current

    Starting backup at 17-NOV-15
    current log archived
    channel d1: starting archived log backup set
    channel d1: specifying archived log(s) in backup set
    input archived log thread=1 sequence=29 RECID=98 STAMP=896011243
    channel d1: starting piece 1 at 17-NOV-15
    channel d2: starting archived log backup set
    channel d2: specifying archived log(s) in backup set
    input archived log thread=1 sequence=30 RECID=99 STAMP=896011243
    channel d2: starting piece 1 at 17-NOV-15
    channel d1: finished piece 1 at 17-NOV-15
    piece handle=/file/backup/rman/log_NEAL_151_1_4nqmg2vb.bkp tag=TAG20151117T120043 comment=NONE
    channel d1: backup set complete, elapsed time: 00:00:01
    channel d1: deleting archived log(s)
    archived log file name=/u01/oracle/archive/1_29_896142292.dbf RECID=98 STAMP=896011243
    channel d2: finished piece 1 at 17-NOV-15
    piece handle=/file/backup/rman/log_NEAL_152_1_4oqmg2vb.bkp tag=TAG20151117T120043 comment=NONE
    channel d2: backup set complete, elapsed time: 00:00:01
    channel d2: deleting archived log(s)
    archived log file name=/u01/oracle/archive/1_30_896142292.dbf RECID=99 STAMP=896011243
    Finished backup at 17-NOV-15
    ......

    Recovery Manager complete.

执行完Level1脚本后,再次使用scott对表t插入values(4)实验数据,我这里直接再次执行了一遍Level0的备份脚本
  1. [oracle@cancer onlinelog]$ sh /server/scripts/rman_bak_level0.sh

    Recovery Manager: Release 11.2.0.4.0 - Production on Tue Nov 17 12:01:39 2015

    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

    connected to target database: NEAL (DBID=4033362200)

    RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11>
    using target database control file instead of recovery catalog
    allocated channel: d1
    channel d1: SID=43 device type=DISK

    allocated channel: d2
    channel d2: SID=38 device type=DISK

    Starting backup at 17-NOV-15
    channel d1: starting incremental level 0 datafile backup set
    channel d1: specifying datafile(s) in backup set
    input datafile file number=00001 name=/u01/oracle/oradata/neal/system01.dbf
    input datafile file number=00004 name=/u01/oracle/oradata/neal/users01.dbf
    channel d1: starting piece 1 at 17-NOV-15
    channel d2: starting incremental level 0 datafile backup set
    channel d2: specifying datafile(s) in backup set
    input datafile file number=00002 name=/u01/oracle/oradata/neal/sysaux01.dbf
    input datafile file number=00005 name=/u01/oracle/oradata/neal/test01.dbf
    input datafile file number=00003 name=/u01/oracle/oradata/neal/undotbs01.dbf
    channel d2: starting piece 1 at 17-NOV-15
    channel d1: finished piece 1 at 17-NOV-15
    piece handle=/file/backup/rman/level0_NEAL_154_1_4qqmg315.bkp tag=TAG20151117T120141 comment=NONE
    channel d1: backup set complete, elapsed time: 00:00:55
    channel d2: finished piece 1 at 17-NOV-15
    piece handle=/file/backup/rman/level0_NEAL_155_1_4rqmg315.bkp tag=TAG20151117T120141 comment=NONE
    channel d2: backup set complete, elapsed time: 00:00:55
    Finished backup at 17-NOV-15

    Starting Control File and SPFILE Autobackup at 17-NOV-15
    piece handle=/file/backup/rman/controlfile_c-4033362200-20151117-02 comment=NONE
    Finished Control File and SPFILE Autobackup at 17-NOV-15

    sql statement: alter system archive log current

    Starting backup at 17-NOV-15
    current log archived
    channel d1: starting archived log backup set
    channel d1: specifying archived log(s) in backup set
    input archived log thread=1 sequence=31 RECID=100 STAMP=896011358
    channel d1: starting piece 1 at 17-NOV-15
    channel d2: starting archived log backup set
    channel d2: specifying archived log(s) in backup set
    input archived log thread=1 sequence=32 RECID=101 STAMP=896011358
    channel d2: starting piece 1 at 17-NOV-15
    channel d1: finished piece 1 at 17-NOV-15
    piece handle=/file/backup/rman/log_NEAL_157_1_4tqmg32u.bkp tag=TAG20151117T120238 comment=NONE
    channel d1: backup set complete, elapsed time: 00:00:01
    channel d1: deleting archived log(s)
    archived log file name=/u01/oracle/archive/1_31_896142292.dbf RECID=100 STAMP=896011358
    channel d2: finished piece 1 at 17-NOV-15
    piece handle=/file/backup/rman/log_NEAL_158_1_4uqmg32u.bkp tag=TAG20151117T120238 comment=NONE
    channel d2: backup set complete, elapsed time: 00:00:01
    channel d2: deleting archived log(s)
    archived log file name=/u01/oracle/archive/1_32_896142292.dbf RECID=101 STAMP=896011358
    Finished backup at 17-NOV-15

    ......
    Recovery Manager complete.

以上为备份实验,基本上012备份就如此循环,接着我们进行故障模拟,进行rman的恢复
删除users01.dbf
  1. SQL> conn / as sysdba
    Connected.
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.

    [root@cancer neal]# cd /u01/oracle/oradata/neal/
    [root@cancer neal]# rm users01.dbf
    rm: remove regular file `users01.dbf'? y

启动数据库报错
  1. SQL> startup
    ORACLE instance started.

    Total System Global Area  939495424 bytes
    Fixed Size            2258840 bytes
    Variable Size          599787624 bytes
    Database Buffers      331350016 bytes
    Redo Buffers            6098944 bytes
    Database mounted.
    ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
    ORA-01110: data file 4: '/u01/oracle/oradata/neal/users01.dbf'

查询当前数据库实例状态
  1. SQL> select status from v$instance;

    STATUS
    ------------
    MOUNTED

使用Rman进行恢复数据库
  1. [oracle@cancer onlinelog]$ rman target /

    Recovery Manager: Release 11.2.0.4.0 - Production on Tue Nov 17 12:06:20 2015

    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

    connected to target database: NEAL (DBID=4033362200, not open)

    RMAN> restore database; --先进行数据库的restore

    Starting restore at 17-NOV-15
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=20 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 00002 to /u01/oracle/oradata/neal/sysaux01.dbf
    channel ORA_DISK_1: restoring datafile 00003 to /u01/oracle/oradata/neal/undotbs01.dbf
    channel ORA_DISK_1: restoring datafile 00005 to /u01/oracle/oradata/neal/test01.dbf
    --从下面一行可以看出,rman会使用最新的Level0备份进行restore
    channel ORA_DISK_1: reading from backup piece /file/backup/rman/level0_NEAL_155_1_4rqmg315.bkp
    channel ORA_DISK_1: piece handle=/file/backup/rman/level0_NEAL_155_1_4rqmg315.bkp tag=TAG20151117T120141
    channel ORA_DISK_1: restored backup piece 1
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:35
    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/oracle/oradata/neal/system01.dbf
    channel ORA_DISK_1: restoring datafile 00004 to /u01/oracle/oradata/neal/users01.dbf
    channel ORA_DISK_1: reading from backup piece /file/backup/rman/level0_NEAL_154_1_4qqmg315.bkp
    channel ORA_DISK_1: piece handle=/file/backup/rman/level0_NEAL_154_1_4qqmg315.bkp tag=TAG20151117T120141
    channel ORA_DISK_1: restored backup piece 1
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:45
    Finished restore at 17-NOV-15

    RMAN> recover database;  --对数据库进行recover,由于我这里实验插入数据库直接进行备份,关闭数据库,没有产生新的redo和archived日志,所以没有应用

    Starting recover at 17-NOV-15
    using channel ORA_DISK_1

    starting media recovery
    media recovery complete, elapsed time: 00:00:01

    Finished recover at 17-NOV-15

    SQL> alter database open;     --打开数据库

    Database altered.

    SQL> select * from scott.t;   --查询数据,发现未丢失

  2. A
    ----------
    1
    2
    3
    4

接下来我们查询一下备份的文件
  1. [root@cancer rman]# ll -lrt
    total 2505256
    -rw-r----- 1 oracle oinstall 673488896 Nov 15 12:04 level0_NEAL_136_1_48qmaqdh.bkp
    -rw-r----- 1 oracle oinstall 543481856 Nov 15 12:04 level0_NEAL_137_1_49qmaqdh.bkp
    -rw-r----- 1 oracle oinstall  10223616 Nov 15 12:04 controlfile_c-4033362200-20151115-00
    -rw-r----- 1 oracle oinstall   7707136 Nov 15 12:05 log_NEAL_140_1_4cqmaqff.bkp
    -rw-r----- 1 oracle oinstall  41607680 Nov 15 12:05 log_NEAL_139_1_4bqmaqff.bkp
    -rw-r----- 1 oracle oinstall  10223616 Nov 15 12:05 controlfile_c-4033362200-20151115-01
    -rw-r----- 1 oracle oinstall     57344 Nov 16 12:01 level2_NEAL_142_1_4eqmdek2.bkp
    -rw-r----- 1 oracle oinstall     73728 Nov 16 12:01 level2_NEAL_143_1_4fqmdek2.bkp
    -rw-r----- 1 oracle oinstall  10223616 Nov 16 12:01 controlfile_c-4033362200-20151116-00
    -rw-r----- 1 oracle oinstall      4608 Nov 16 12:01 log_NEAL_145_1_4hqmdel8.bkp
    -rw-r----- 1 oracle oinstall      2560 Nov 16 12:01 log_NEAL_146_1_4iqmdel8.bkp
    -rw-r----- 1 oracle oinstall  10223616 Nov 16 12:01 controlfile_c-4033362200-20151116-01
    -rw-r----- 1 oracle oinstall     57344 Nov 17 12:00 level1_NEAL_148_1_4kqmg2u6.bkp
    -rw-r----- 1 oracle oinstall     90112 Nov 17 12:00 level1_NEAL_149_1_4lqmg2u6.bkp
    -rw-r----- 1 oracle oinstall  10223616 Nov 17 12:00 controlfile_c-4033362200-20151117-00
    -rw-r----- 1 oracle oinstall      4608 Nov 17 12:00 log_NEAL_151_1_4nqmg2vb.bkp
    -rw-r----- 1 oracle oinstall      2560 Nov 17 12:00 log_NEAL_152_1_4oqmg2vb.bkp
    -rw-r----- 1 oracle oinstall  10223616 Nov 17 12:00 controlfile_c-4033362200-20151117-01
    -rw-r----- 1 oracle oinstall 543481856 Nov 17 12:02 level0_NEAL_155_1_4rqmg315.bkp
    -rw-r----- 1 oracle oinstall 673488896 Nov 17 12:02 level0_NEAL_154_1_4qqmg315.bkp
    -rw-r----- 1 oracle oinstall  10223616 Nov 17 12:02 controlfile_c-4033362200-20151117-02
    -rw-r----- 1 oracle oinstall      4608 Nov 17 12:02 log_NEAL_157_1_4tqmg32u.bkp
    -rw-r----- 1 oracle oinstall      2560 Nov 17 12:02 log_NEAL_158_1_4uqmg32u.bkp
    -rw-r----- 1 oracle oinstall  10223616 Nov 17 12:02 controlfile_c-4033362200-20151117-03

这里我将最新的一次Level0物理删除,重新查看备份文件
  1. [root@cancer rman]# ll -lrt
    total 2505256
    -rw-r----- 1 oracle oinstall 673488896 Nov 15 12:04 level0_NEAL_136_1_48qmaqdh.bkp
    -rw-r----- 1 oracle oinstall 543481856 Nov 15 12:04 level0_NEAL_137_1_49qmaqdh.bkp
    -rw-r----- 1 oracle oinstall  10223616 Nov 15 12:04 controlfile_c-4033362200-20151115-00
    -rw-r----- 1 oracle oinstall   7707136 Nov 15 12:05 log_NEAL_140_1_4cqmaqff.bkp
    -rw-r----- 1 oracle oinstall  41607680 Nov 15 12:05 log_NEAL_139_1_4bqmaqff.bkp
    -rw-r----- 1 oracle oinstall  10223616 Nov 15 12:05 controlfile_c-4033362200-20151115-01
    -rw-r----- 1 oracle oinstall     57344 Nov 16 12:01 level2_NEAL_142_1_4eqmdek2.bkp
    -rw-r----- 1 oracle oinstall     73728 Nov 16 12:01 level2_NEAL_143_1_4fqmdek2.bkp
    -rw-r----- 1 oracle oinstall  10223616 Nov 16 12:01 controlfile_c-4033362200-20151116-00
    -rw-r----- 1 oracle oinstall      4608 Nov 16 12:01 log_NEAL_145_1_4hqmdel8.bkp
    -rw-r----- 1 oracle oinstall      2560 Nov 16 12:01 log_NEAL_146_1_4iqmdel8.bkp
    -rw-r----- 1 oracle oinstall  10223616 Nov 16 12:01 controlfile_c-4033362200-20151116-01
    -rw-r----- 1 oracle oinstall     57344 Nov 17 12:00 level1_NEAL_148_1_4kqmg2u6.bkp
    -rw-r----- 1 oracle oinstall     90112 Nov 17 12:00 level1_NEAL_149_1_4lqmg2u6.bkp
    -rw-r----- 1 oracle oinstall  10223616 Nov 17 12:00 controlfile_c-4033362200-20151117-00
    -rw-r----- 1 oracle oinstall      4608 Nov 17 12:00 log_NEAL_151_1_4nqmg2vb.bkp
    -rw-r----- 1 oracle oinstall      2560 Nov 17 12:00 log_NEAL_152_1_4oqmg2vb.bkp
    -rw-r----- 1 oracle oinstall  10223616 Nov 17 12:00 controlfile_c-4033362200-20151117-01

在Rman中删除该Level0的备份信息
  1. [oracle@cancer onlinelog]$ rman target /

    Recovery Manager: Release 11.2.0.4.0 - Production on Tue Nov 17 12:13:11 2015

    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

    connected to target database: NEAL (DBID=4033362200)

    RMAN> crosscheck backup;

    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=18 device type=DISK
    crosschecked backup piece: found to be 'AVAILABLE'
    .....
    Crosschecked 24 objects


    RMAN> delete expired backup;

    using channel ORA_DISK_1

    List of Backup Pieces
    BP Key  BS Key  Pc# Cp# Status      Device Type Piece Name
    ------- ------- --- --- ----------- ----------- ----------
    144     144     1   1   EXPIRED     DISK        /file/backup/rman/level0_NEAL_155_1_4rqmg315.bkp
    145     145     1   1   EXPIRED     DISK        /file/backup/rman/level0_NEAL_154_1_4qqmg315.bkp
    146     146     1   1   EXPIRED     DISK        /file/backup/rman/controlfile_c-4033362200-20151117-02
    147     147     1   1   EXPIRED     DISK        /file/backup/rman/log_NEAL_157_1_4tqmg32u.bkp
    148     148     1   1   EXPIRED     DISK        /file/backup/rman/log_NEAL_158_1_4uqmg32u.bkp
    149     149     1   1   EXPIRED     DISK        /file/backup/rman/controlfile_c-4033362200-20151117-03

    Do you really want to delete the above objects (enter YES or NO)? yes
    deleted backup piece
    .....
    Deleted 6 EXPIRED objects

按照上面操作,再次删除users01.dbf,重新使用rman恢复
  1. [oracle@cancer onlinelog]$ rman target /

    Recovery Manager: Release 11.2.0.4.0 - Production on Tue Nov 17 12:15:18 2015

    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

    connected to target database: NEAL (DBID=4033362200, not open)

    RMAN> restore database;

    Starting restore at 17-NOV-15
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=20 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/oracle/oradata/neal/system01.dbf
    channel ORA_DISK_1: restoring datafile 00004 to /u01/oracle/oradata/neal/users01.dbf
    --从下面可以看出,rman使用第一次备份的Level0开始恢复,因此可以认为,Rman进行恢复时,总是从最近一次的可用Level0进行restore
    channel ORA_DISK_1: reading from backup piece /file/backup/rman/level0_NEAL_136_1_48qmaqdh.bkp
    channel ORA_DISK_1: piece handle=/file/backup/rman/level0_NEAL_136_1_48qmaqdh.bkp tag=TAG20151115T120400
    channel ORA_DISK_1: restored backup piece 1
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:35
    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 00002 to /u01/oracle/oradata/neal/sysaux01.dbf
    channel ORA_DISK_1: restoring datafile 00003 to /u01/oracle/oradata/neal/undotbs01.dbf
    channel ORA_DISK_1: restoring datafile 00005 to /u01/oracle/oradata/neal/test01.dbf
    channel ORA_DISK_1: reading from backup piece /file/backup/rman/level0_NEAL_137_1_49qmaqdh.bkp
    channel ORA_DISK_1: piece handle=/file/backup/rman/level0_NEAL_137_1_49qmaqdh.bkp tag=TAG20151115T120400
    channel ORA_DISK_1: restored backup piece 1
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
    Finished restore at 17-NOV-15

    RMAN> recover database;

    Starting recover at 17-NOV-15
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting incremental datafile backup set restore
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set
    destination for restore of datafile 00001: /u01/oracle/oradata/neal/system01.dbf
    destination for restore of datafile 00004: /u01/oracle/oradata/neal/users01.dbf
    --从下面可以看出,rman使用上述Level0最近一次的Level1进行recover,再继续逐个使用Level2进行recover,最后使用归档日志和重做日志进行recover
    channel ORA_DISK_1: reading from backup piece /file/backup/rman/level1_NEAL_148_1_4kqmg2u6.bkp
    channel ORA_DISK_1: piece handle=/file/backup/rman/level1_NEAL_148_1_4kqmg2u6.bkp tag=TAG20151117T120006
    channel ORA_DISK_1: restored backup piece 1
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
    channel ORA_DISK_1: starting incremental datafile backup set restore
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set
    destination for restore of datafile 00002: /u01/oracle/oradata/neal/sysaux01.dbf
    destination for restore of datafile 00003: /u01/oracle/oradata/neal/undotbs01.dbf
    destination for restore of datafile 00005: /u01/oracle/oradata/neal/test01.dbf
    channel ORA_DISK_1: reading from backup piece /file/backup/rman/level1_NEAL_149_1_4lqmg2u6.bkp
    channel ORA_DISK_1: piece handle=/file/backup/rman/level1_NEAL_149_1_4lqmg2u6.bkp tag=TAG20151117T120006
    channel ORA_DISK_1: restored backup piece 1
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

    starting media recovery           --这里报错是因为是我之前删除了Level0备份,但是控制文件记录的信息要比备份信息新,故报错,忽略

    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: failure of recover command at 11/17/2015 12:16:31
    RMAN-06053: unable to perform media recovery because of missing log
    RMAN-06025: no backup of archived log for thread 1 with sequence 32 and starting SCN of 1716223 found to restore
    RMAN-06025: no backup of archived log for thread 1 with sequence 31 and starting SCN of 1716083 found to restore


    RMAN> recover database until sequence 31;--使用不完全恢复

    Starting recover at 17-NOV-15
    using channel ORA_DISK_1

    starting media recovery

    channel ORA_DISK_1: starting archived log restore to default destination
    channel ORA_DISK_1: restoring archived log
    archived log thread=1 sequence=29
    channel ORA_DISK_1: reading from backup piece /file/backup/rman/log_NEAL_151_1_4nqmg2vb.bkp
    channel ORA_DISK_1: piece handle=/file/backup/rman/log_NEAL_151_1_4nqmg2vb.bkp tag=TAG20151117T120043
    channel ORA_DISK_1: restored backup piece 1
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
    archived log file name=/u01/oracle/archive/1_29_896142292.dbf thread=1 sequence=29
    channel ORA_DISK_1: starting archived log restore to default destination
    channel ORA_DISK_1: restoring archived log
    archived log thread=1 sequence=30
    channel ORA_DISK_1: reading from backup piece /file/backup/rman/log_NEAL_152_1_4oqmg2vb.bkp
    channel ORA_DISK_1: piece handle=/file/backup/rman/log_NEAL_152_1_4oqmg2vb.bkp tag=TAG20151117T120043
    channel ORA_DISK_1: restored backup piece 1
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
    archived log file name=/u01/oracle/archive/1_30_896142292.dbf thread=1 sequence=30
    media recovery complete, elapsed time: 00:00:01
    Finished recover at 17-NOV-15

使用resetlogs进行打开数据库
  1. SQL> alter database open resetlogs;

    Database altered.

查看数据
  1. SQL> select * from scott.t;

         A
    ----------
         1
         2
         3

发现values(4)丢失,不完全恢复导致

实验结论:Rman进行恢复时,首先使用最近一次可用的Level0备份进行restore数据库,接着根据最近一次可用的Level1-Level2-Leve2-...-Leve2-归档日志-重做日志进行recover数据库。

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

请登录后发表评论 登录
全部评论
擅长PLS/QL开发,SQL调优和改写,数据库设计

注册时间:2014-08-18

  • 博文量
    161
  • 访问量
    1204465