如果自己搞不定可以找诗檀软件专业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。
Leave a Reply