基於SCN恢復是指當出現用戶錯誤(例如誤刪除表、誤截斷表)時,恢復到指定SCN點的恢復。
模擬誤刪除表t_user。
執行rman,啟動數據庫到mount狀態。
使用set until scn命令指定要恢復到的scn點。
轉儲、恢復數據庫,並使用resetlogs選項打開數據庫。
--模擬誤刪除表t_user。
- 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恢復的全部內容,本文我們就介紹到這裡了,希望本次的介紹能夠對您有所收獲!