数据库级别跨resetlogs和incarnation恢复

1、创建测试表
SQL> conn scott/oracle
Connected.
SQL> create table binbin as select * from user_objects;

Table created.

SQL> select count(1) from binbin;

  COUNT(1)
----------
        16

SQL> alter system switch logfile;

System altered.

2、备份
RMAN>  backup database format='/opt/backup/dbfull_%U.bak';

Starting backup at 2013-10-01
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=140 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=/opt/oracle/oradata/ORCL/system01.dbf
input datafile fno=00003 name=/opt/oracle/oradata/ORCL/sysaux01.dbf
input datafile fno=00002 name=/opt/oracle/oradata/ORCL/undotbs01.dbf
input datafile fno=00004 name=/opt/oracle/oradata/ORCL/users01.dbf
channel ORA_DISK_1: starting piece 1 at 2013-10-01
channel ORA_DISK_1: finished piece 1 at 2013-10-01
piece handle=/opt/backup/dbfull_0holbhgn_1_1.bak tag=TAG20131001T220055 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:35
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including current control file in backupset
including current SPFILE in backupset
channel ORA_DISK_1: starting piece 1 at 2013-10-01
channel ORA_DISK_1: finished piece 1 at 2013-10-01
piece handle=/opt/backup/dbfull_0iolbhjn_1_1.bak tag=TAG20131001T220055 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:06
Finished backup at 2013-10-01
SQL>  alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL>  select sysdate from dual;

SYSDATE
-------------------
2013-10-01 22:49:27


          select * from v$Log;
   GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIV STATUS          FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- ------ --------------- ------------- -------------------
         1          1          2   52428800          1 NO     CURRENT                772273 2013-10-01 22:46:31
         2          1          1   52428800          1 YES    INACTIVE               771785 2013-10-01 22:41:53
         3          1          0   52428800          1 YES    UNUSED                      0

 

3、truncate测试表
SQL> truncate table binbin;

Table truncated.

SQL> alter system switch logfile;

System altered.
SQL> select * from v$Log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIV STATUS          FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- ------ --------------- ------------- -------------------
         1          1          2   52428800          1 YES    ACTIVE                 772273 2013-10-01 22:46:31
         2          1          1   52428800          1 YES    INACTIVE               771785 2013-10-01 22:41:53
         3          1          3   52428800          1 NO     CURRENT                772410 2013-10-01 22:50:27

SQL> conn / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  2020224 bytes
Variable Size              96472192 bytes
Database Buffers          184549376 bytes
Redo Buffers                2170880 bytes
Database mounted.

4、第一恢复:
[oracle@localhost backup]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on ÐÇÆÚ¶þ 10ÔÂ 1 22:52:22 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: ORCL (DBID=1344415282, not open)

RMAN> run {
 allocate channel a1 type disk;
sql 'alter session set nls_date_format= "YYYY-MM-DD HH24:MI:SS"';
set until time '2013-10-01 22:49:27';
restore database;
recover database;
sql 'alter database open resetlogs';
release channel a1;
}2> 3> 4> 5> 6> 7> 8> 9>

using target database control file instead of recovery catalog
allocated channel: a1
channel a1: sid=154 devtype=DISK

sql statement: alter session set nls_date_format= "YYYY-MM-DD HH24:MI:SS"

executing command: SET until clause

Starting restore at 2013-10-01

channel a1: starting datafile backupset restore
channel a1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /opt/oracle/oradata/ORCL/system01.dbf
restoring datafile 00002 to /opt/oracle/oradata/ORCL/undotbs01.dbf
restoring datafile 00003 to /opt/oracle/oradata/ORCL/sysaux01.dbf
restoring datafile 00004 to /opt/oracle/oradata/ORCL/users01.dbf
channel a1: reading from backup piece /opt/backup/dbfull_0kolbk72_1_1.bak
channel a1: restored backup piece 1
piece handle=/opt/backup/dbfull_0kolbk72_1_1.bak tag=TAG20131001T224658
channel a1: restore complete, elapsed time: 00:01:16
Finished restore at 2013-10-01

Starting recover at 2013-10-01

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

Finished recover at 2013-10-01

sql statement: alter database open resetlogs


released channel: a1

 

5、查看sequence是否被重置

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> /

System altered.

 select * from v$Log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIV STATUS          FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- ------ --------------- ------------- ----------
         1          1          2   52428800          1 YES    INACTIVE               772644 2013-10-01
         2          1          3   52428800          1 YES    INACTIVE               772646 2013-10-01
         3          1          4   52428800          1 NO     CURRENT                772650 2013-10-01

 

6、第二次恢复
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>  startup mount
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  2020224 bytes
Variable Size             100666496 bytes
Database Buffers          180355072 bytes
Redo Buffers                2170880 bytes
Database mounted.
SQL>

RMAN> list incarnation;

using target database control file instead of recovery catalog

List of Database Incarnations
DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1       1       ORCL     1344415282       PARENT  1          2005-10-22
2       2       ORCL     1344415282       PARENT  525876     2013-05-28
3       3       ORCL     1344415282       ORPHAN  693177     2013-09-12
4       4       ORCL     1344415282       PARENT  693177     2013-09-12
5       5       ORCL     1344415282       PARENT  693583     2013-09-12
6       6       ORCL     1344415282       PARENT  704038     2013-09-14
7       7       ORCL     1344415282       PARENT  728384     2013-09-15
8       8       ORCL     1344415282       PARENT  771785     2013-10-01
9       9       ORCL     1344415282       CURRENT 772367     2013-10-01

RMAN>
run {
 allocate channel a1 type disk;
sql 'alter session set nls_date_format= "YYYY-MM-DD HH24:MI:SS"';
set until time '2013-10-01 22:49:27';
restore database;
recover database;
sql 'alter database open resetlogs';
release channel a1;
}
RMAN> 2> 3> 4> 5> 6> 7> 8> 9>

allocated channel: a1
channel a1: sid=154 devtype=DISK

sql statement: alter session set nls_date_format= "YYYY-MM-DD HH24:MI:SS"

executing command: SET until clause
released channel: a1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of set command at 10/01/2013 22:57:49
RMAN-20207: UNTIL TIME or RECOVERY WINDOW is before RESETLOGS time

RMAN>
提示until time '2013-10-01 22:49:27'是resetlogs之前的时间。
7、修改 incarnation
RMAN> reset database to incarnation  8;

database reset to incarnation 8

RMAN>
run {
 allocate channel a1 type disk;
sql 'alter session set nls_date_format= "YYYY-MM-DD HH24:MI:SS"';
set until time '2013-10-01 22:49:27';
restore database;
recover database;
sql 'alter database open resetlogs';
release channel a1;
}
RMAN> 2> 3> 4> 5> 6> 7> 8> 9>

allocated channel: a1
channel a1: sid=154 devtype=DISK

sql statement: alter session set nls_date_format= "YYYY-MM-DD HH24:MI:SS"

executing command: SET until clause

Starting restore at 2013-10-01

channel a1: starting datafile backupset restore
channel a1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /opt/oracle/oradata/ORCL/system01.dbf
restoring datafile 00002 to /opt/oracle/oradata/ORCL/undotbs01.dbf
restoring datafile 00003 to /opt/oracle/oradata/ORCL/sysaux01.dbf
restoring datafile 00004 to /opt/oracle/oradata/ORCL/users01.dbf
channel a1: reading from backup piece /opt/backup/dbfull_0kolbk72_1_1.bak
channel a1: restored backup piece 1
piece handle=/opt/backup/dbfull_0kolbk72_1_1.bak tag=TAG20131001T224658
channel a1: restore complete, elapsed time: 00:01:15
Finished restore at 2013-10-01

Starting recover at 2013-10-01

starting media recovery
media recovery failed
released channel: a1
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 10/01/2013 22:59:47
ORA-00283: recovery session canceled due to errors
RMAN-11003: failure during parse/execution of SQL statement: alter database recover if needed
 start until time '10ÔÂ 01 2013 22:49:27'
ORA-00283: recovery session canceled due to errors
ORA-38727: FLASHBACK DATABASE requires a current control file.
从这个报错可以看出打开了flashback

8、关闭flashback
RMAN> sql 'alter database flashback off';

sql statement: alter database flashback off
9、再次恢复
RMAN>
run {
 allocate channel a1 type disk;
sql 'alter session set nls_date_format= "YYYY-MM-DD HH24:MI:SS"';
set until time '2013-10-01 22:49:27';
restore database;
recover database;
sql 'alter database open resetlogs';
release channel a1;
}
RMAN> 2> 3> 4> 5> 6> 7> 8> 9>

allocated channel: a1
channel a1: sid=154 devtype=DISK

sql statement: alter session set nls_date_format= "YYYY-MM-DD HH24:MI:SS"

executing command: SET until clause

Starting restore at 2013-10-01

skipping datafile 1; already restored to file /opt/oracle/oradata/ORCL/system01.dbf
skipping datafile 2; already restored to file /opt/oracle/oradata/ORCL/undotbs01.dbf
skipping datafile 3; already restored to file /opt/oracle/oradata/ORCL/sysaux01.dbf
skipping datafile 4; already restored to file /opt/oracle/oradata/ORCL/users01.dbf
restore not done; all files readonly, offline, or already restored
Finished restore at 2013-10-01

Starting recover at 2013-10-01

starting media recovery

archive log thread 1 sequence 2 is already on disk as file /u01/backup/1_2_827707313.dbf
archive log filename=/u01/backup/1_2_827707313.dbf thread=1 sequence=2
media recovery complete, elapsed time: 00:00:03
Finished recover at 2013-10-01

sql statement: alter database open resetlogs

released channel: a1

RMAN>
RMAN> list incarnation ;

List of Database Incarnations
DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1       1       ORCL     1344415282       PARENT  1          2005-10-22
2       2       ORCL     1344415282       PARENT  525876     2013-05-28
3       3       ORCL     1344415282       ORPHAN  693177     2013-09-12
4       4       ORCL     1344415282       PARENT  693177     2013-09-12
5       5       ORCL     1344415282       PARENT  693583     2013-09-12
6       6       ORCL     1344415282       PARENT  704038     2013-09-14
7       7       ORCL     1344415282       PARENT  728384     2013-09-15
8       8       ORCL     1344415282       PARENT  771785     2013-10-01
9       9       ORCL     1344415282       ORPHAN  772367     2013-10-01
10      10      ORCL     1344415282       CURRENT 772367     2013-10-01


10、验证是否恢复成功
SQL> conn scott/oracle
Connected.
SQL> select count(1) from binbin;

  COUNT(1)
----------
        16

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值