之前我们介绍了:Oracle数据库RMAN不完全恢复之基于时间恢复,本文我们介绍一下Oracle数据库RMAN不完全恢复的基于SCN恢复的相关知识,希望能够对您有所帮助。
基于SCN恢复是指当出现用户错误(例如误删除表、误截断表)时,恢复到指定SCN点的恢复。
模拟误删除表t_user。
执行rman,启动数据库到mount状态。
使用set until scn命令指定要恢复到的scn点。
转储、恢复数据库,并使用resetlogs选项打开数据库。
--模拟误删除表t_user。
class="dp-xml">
- SQL> select count(*) from t_user;
- COUNT(*)
- ----------
- 2
- SQL> insert into t_user select 'spring mvc_' from dual;
- 1 row created.
- SQL> commit;
- Commit complete.
- SQL> alter system switch logfile;
- System altered.
- SQL> alter system checkpoint;
- System altered.
- SQL> select current_scn from v$database;
- CURRENT_SCN
- -----------
- 1214281
- SQL> drop table t_user;
- Table dropped.
--恢复
- [oracle@localhost ~]$ rman target sys/oracle@oralife nocatalog
- RMAN> run {
- 2> startup force mount;
- 3> set until scn=1214281;
- 4> restore database;
- 5> recover database;
- 6> sql 'alter database open resetlogs';
- 7> }
--已恢复
- SQL> select count(*) from t_user;
- COUNT(*)
- ----------
- 3
在实际环境下,应该使用LogMiner确定误操作SCN点。
在执行了不完全恢复之后,推荐删除早期所有备份,重新备份数据库。
以上就是Oracle数据库RMAN不完全恢复之基于SCN恢复的全部内容,本文我们就介绍到这里了,希望本次的介绍能够对您有所收获!