Oracle 11g學習筆記--查詢閃回

Oracle 11g學習筆記–查詢閃回

如果錯誤的提交了修改操作,並想查看被修改行原來的值,可以使用查詢閃回。然後如果需要,就可以使用查詢閃回的結果將這些行手工改回原來的值;

另外,查詢閃回可根據一個時間值或系統變更號(scn)進行;數據庫使用scn來跟蹤對數據進行的修改,因此可以使用它來回閃到數據庫中一個特定的scn時的狀態;

使用場景:

你可能在某一時間點對某一個表執行了操作,此時如果你想回去查看執行操作之前的數據,你便可以使用閃回操作;

首先,授權,然後指定要閃回的時間點,然後就可以開始查詢數據,此時查詢的數據都是你在那個時間點以前操作的數據,時間點以後的更新並不會顯示;(注意,在這個時間段,只能進行查詢操作。)

使用結束後,便可禁用閃回操作,在操作數據庫,就是對最新的數據操作了;

1.使用閃回的特權

--以sys身份連接到數據庫
connect sys/change_on_install as sysdba
--將對dbms_flashback包的execute權限授予給user_name用戶;
grant execute on sys.dbms_flashback to user_name;

2.時間閃回查詢

●閃回到十分鐘之前

execute dbms_flashback_at_time(sysdate - 10 / 1440);

注意:此處的日期是以天爲單位的,而一天有1440分鐘,所以會有如上寫法;

●禁用閃回操作

execute dbms_flashback.disable();

3.系統變更號查詢閃回
因爲數據庫是根據scn來跟蹤對數據所做的變化的,要獲取當前的scn,可以執行dbms_flashback.get_system_change_number();

●查詢當前變更號

--定義變量
variable current_scn number
--查詢scn並賦值給變量
execute: current_scn := dbms_flashback.get_system_change_number();
--輸出變量
print current_scn;

●閃回到一個scn的狀態

execute dbms_flashback.enable_at_system_change_number(:current_scn);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章