如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
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 ----------- 547891Bob 丢弃了表,采用了数据库和交换日志文件的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 IncarnationsDB 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。