基于Oracle RMAN恢复到之前的incarnation

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638    QQ号:47079569    邮箱:[email protected]

 

RMAN 备份 和恢复到数据库之前的incarnation 

进行不完全恢复到之前incarnation的操作之前,首先我们需要明白数据库incarnation是什么,实际上,incarnation是数据库的新版本,使用重设日志选项打开数据库,Oracle 归档当前重做日志文件,通过将日志序列号重置为1清空它们,不完全恢复后,归档重做日志文件中的信息只是部分应用,这个选项是最常使用的。所以,需要清空在线重做日志文件。

如果使用重设日志选项打开数据库,新建incarnation之前已取走备份,所以使用备份是不可能的看看下面的情况下更好地了解这个过程。

在下面的情况下,我们会展示数据库管理员Bob必须如何执行第二次不完全恢复,将数据库恢复到第一次不完全恢复之前的状态,重设数据库到incarnation之前的状态, Bob 备份数据库,通过获得下列数据库的scn值创建表:

RMAN> backup database;

SQL>
create
table test
as select * from
all_objects;
Table created.

SQL>
select
current_scn
from
v$database;

CURRENT_SCN
———–
547181

然后,他删除了表中所有的行并使用了数据库的scn值:

SQL>
delete from
test;
49309 rows deleted.

SQL>
commit;
Commit complete.

SQL>
select
current_scn
from
v$database;

CURRENT_SCN
———–
547891

Bob 丢弃了表,采用了数据库和交换日志文件的scn :

SQL>
drop
table test;
Table dropped.
SQL>
select
current_scn
from
v$database;

CURRENT_SCN
———–
547917
SQL>
alter
system switch logfile;
System altered.

接着,他得到了数据库所有incarnation的列表:

SQL>
select
incarnation#, resetlogs_change#
from
v$database_incarnation;

INCARNATION# RESETLOGS_CHANGE#
———— —————–
1                 1
2            534907

然后,他执行不完全恢复,将数据库恢复到丢弃表之前的状态,这样,知道下列的scn 547891:

SQL>
shutdown immediate
SQL>
startup
mount
RMAN> run
2> {
3> set until scn=547891;
4> restore database;
5> recover database;
6> }
RMAN> alter database open resetlogs;

他使用重设日志选项打开数据库的同时,创建了一个新的incarnation,下面,他检查新incarnation,恢复了表:

SQL>
select
incarnation#, resetlogs_change#
from
v$database_incarnation;

INCARNATION# RESETLOGS_CHANGE#
———— —————–
1                 1
2            534907
3            547896

SQL>
select * from
test;
no rows selected
SQL>

新incarnation被创建,表成功得到恢复,这项操作之后,他将数据库恢复到发出的如下的删除命令:

RMAN> run
2> {
3> set until scn=547181;
4> restore database;
5> recover database;
6> }

executing command: set until clause
using target database control file instead of recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== error message stack follows ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of set command at 10/29/2009 16:15:46
RMAN-20208: until change is before resetlogs change

突然,Bob收到错误,他不能使用 UNTIL SCN 语句,这会恢复使用重设日志选项打开数据库之前备份的数据,然后,他创建了所有RMAN数据库incarnation的列表,将数据库重设到之前的incarnation,执行下列不完全的恢复:

RMAN> list incarnation of database;
List of Database Incarnations

DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
——- ——- ——– —————- — ———- ————–
1       1       DB1      1295402827       PARENT  1          30-AUG-05
2       2       DB1      1295402827       PARENT  534907     29-OCT-09
3       3       DB1      1295402827       CURRENT 547896     29-OCT-09

RMAN> shutdown immediate
RMAN> startup mount
RMAN> reset database to incarnation 2;
database reset to incarnation 2

RMAN> run
2> {
3> set until scn=547181;
4> restore database;
5> recover database;
6> }

RMAN> alter database open resetlogs;
database opened

RMAN> list incarnation of database;
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       DB1      1295402827       PARENT  1          30-AUG-05
2       2       DB1      1295402827       PARENT  534907     29-OCT-09
4       4       DB1      1295402827       CURRENT 547183     29-OCT-09
3       3       DB1      1295402827       ORPHAN  547896     29-OCT-09

SQL>
select
count(1)
from
test;

COUNT(1)
———-
49309
SQL>

表成功恢复到之前的incarnation,并创建了一个新的incarnation。 


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *