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

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

服务热线 : 13764045638   QQ号:47079569 邮箱:service@parnassusdata.com

RMAN 备份和恢复到还原点 

原点是有关数据库scn 的名字,在进行任何批量操作之前,为了能恢复到操作之前生成的具体的 scn ,我们创建一个还原点,不需要记住 scn号和操作时间,同时,有可能恢复数据库到任何还原点。

Bob 被要求创建一个包含数据库中所有对象的表,建完表之后, Bob决定执行一个测试,删除表,但是在这之前,他想要确认他能把数据库恢复到删除标志前的点,所以他创建了一个还原点。执行测试之后,他决定通过执行不完全恢复把表恢复到还原点,这里是这种情况的详情。 

Bob 创建了下列表:

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

然后他备份了数据库:

RMAN> backup database;

通过列出备份,他得到文件备份时的文件scn:

RMAN> list backup; File LV Type Ckp SCN    Ckp Time  Name ---- -- ---- ---------- --------- ---- 1       Full 649848     28-OCT-09 C:\ORACLE\product\10.2.0\oradata\ db1\system01.dbf

因此,该数据文件的 scn 649848.

然后Bob 决定删除他创建的表,他创建了一个还原点为了能够恢复到删除命令之前。为了获得删除点的列表,使用 v$restore_point 视图:

SQL> select current_scn from v$database; CURRENT_SCN ----------- 650143 SQL> create restore point before_delete; Restore point created. SQL> select scn, name from v$restore_point; SCN               NAME ----------        -------------------- 650149                   BEFORE_DELETE

然后,他删除表中数据,执行下列语句:

SQL> delete from test; 49311 rows deleted. SQL> commit; Commit complete. SQL> alter system switch logfile; System altered. SQL>

现在,他决定恢复表,执行RMAN中的下列步骤:

RMAN> shutdown immediate RMAN> startup mount RMAN> run 2> { 3> set until restore point before_delete; 4> restore database; 5> recover database; 6> } RMAN> alter database open resetlogs; database opened RMAN>

现在到了检查表的时间:

SQL>  select count(1)  from test; COUNT(1) ---------- 49311

正如这里显示的那样,表成功恢复到删除表之前创建的还原点。