Oracle 9i R2中的flashback功能巧妙利用
本文主要介紹的是如何利用Oracle 9i R2中的flashback功能,恢復以下某表中的相關數據的實際操作步驟,我們首先以通過查詢v$archived_log視圖的方式來進行,以下就是實際步驟的詳細介紹。
首先如果數據庫在歸檔模式下,我們可以通過查詢v$archived_log視圖來查看各個歸檔日志所屬的檢查點:
- select name,first_change#,next_change#,first_time from v$archived_log;
通過包dbms_flashback.get_system_change_number來獲得數據庫的SCN號,當然如果你的數據庫是10g的話,還可以查看v$database中的字段current_scn.
- select dbms_flashback.get_system_change_number from dual;
select count(*) from student 看看我們的表中的數據有多少。
- create table student_recovery
- as
- select * from student where 1=0
來創建恢復表的結構。
開始我們的閃回查詢:
選擇一個前面的SCN進行向前恢復
- select count(*) from student as of scn 3154835
嘗試多個scn來獲得我們所期望的結構
***通過:
- insert into student_recovery select * from student as of scn3154835 commit;
來恢復我們表中的數據。
還有一點需要我們注意的是什么呢?就是smon_scn_time這個表,這個表記錄了Oracle數據庫的系統表,用以進行輔助的恢復等功能。這個表在9iR2的時候是每5分鐘刷新一次,而且smon_scn_time會記錄5天的數據,也就是1440行記錄,因此在Oracle9iR2中,表屬性修改時間和flashback時間差至少應為5分鐘,否則會報ora-01466的錯誤。
上述的相關內容就是對利用Oracle 9i R2的flashback功能來恢復一下某表中的數據的步驟的描述,希望會給你帶來一些幫助在此方面。
【編輯推薦】