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