閃回的基本概念
在oracle的操作工程中,會不可避免地出現操作失誤或者使用者失誤,例如不小心刪除了乙個表等,這些失誤和錯誤可能會造成重要資料的丟失,最終導致oracle資料庫停止。閃回表在傳統意義上,當發生資料丟失、資料錯誤問題時,解決的主要辦法是資料的匯入匯出、備份恢復技術,這些方法都需要在發生錯誤前,有乙個正確的備份才能進行恢復。
為了減少這方面的損失,oracle提供了閃回技術。有了閃回技術,就可以實現資料的快速恢復,而且不需要資料備份。
閃回的型別:
閃回表(flashback table) :恢復到過去的乙個是時間點
閃回刪除(flashback drop) :**站中將已刪除的物件恢復到刪除之前的狀態
閃回版本查詢(flashback version query) :檢視使用者提交了的增刪改的操作以及相應操作時間的記錄
閃回事務查詢(flashback transaction query) :查詢某個事務甚至撤銷乙個已經提交的事務
閃回的益處
恢復中,閃回技術是革命性的進步
傳統的恢復技術緩慢:
•它是整個資料庫或者乙個檔案恢復,不只恢復損壞的資料
•在資料庫日誌中每個修改都必須被檢查
閃回速度快:
•通過行和事務把改變編入索引
•僅僅改變了的資料會被恢復
閃回命令很容易:
•沒有複雜棘手的多步程式
閃回表,實際上是將表中的資料快速恢復到過去的乙個是時間點或者系統改變號scn上。實現表的閃回,需要使用到與撤銷表空間相關的undo資訊,通過show parameter undo命令可以了解這些資訊。使用者對錶資料的修改操作,都記錄在撤銷表空間中,這為表的閃回提供了資料恢復的基礎。例如,某個修改操作在提交後被記錄在撤銷表空間中,保留時間為900秒,使用者可以在這900秒的時間內對錶進行閃回操作,從而將表中的資料恢復到修改之前的狀態。
閃回表的步驟:
1.執行表的閃回要設定使用者許可權:grant flashback any table to scott;
2. 獲取要恢復的點(scn號):select sysdate 時間, timestamp_to_scn(sysdate) scn from dual; 3.
將表的行移動功能開啟:alter table flshback_table enable row movement;
4. 執行閃回表:flashback table flashback_table to scn 945018(獲取到的scn號,也可指定在某個時間段恢復);
閃回刪除
閃回刪除,實際上從系統的**站中將已刪除的物件,恢復到刪除之前的狀態。 系統的**站只對普通使用者有作用。**站是所有被刪除物件及其相依物件的邏輯儲存容器,例如當乙個表被刪除(drop)時,該錶及其相依物件並不會馬上被資料庫徹底刪除,而是被儲存到**站中,而管理員是沒有**站。**站將使用者執行的drop操作記錄在乙個系統表中,也就是將被刪除的物件寫到乙個資料字典中。如果確定不再需要該物件,可以使用purge命令對**站進行清空。
被刪除的物件的名字可能是相同的,例如使用者建立了乙個test表,使用drop命令刪除該錶後,又建立了乙個test表,這時,如果再次刪除該錶就會導致向**站中新增了兩個相向同的表,這樣就需要將**站中的名稱重新命名後再執行閃回。
檢視**站:show recyclebin;
清空**站:purge recyclebin;
徹底刪除表不經**站:drop table test123 purge;
執行閃回(必須在**站中):flashback table test123 to before drop;
很據在**站中的名稱執行閃回:flashback table "bin$9jmrb6kbrcon287ldv+5da==$0" to before drop;
**站中的名稱重新命名後執行閃回:flashback table test123 to before drop rename to test1234;
閃回刪除: 需要注意的事情:
閃回刪除對下列表無效:
在system 表空間內的表
用精細審計的資料庫或 虛擬的私人資料庫
屬於字典管理的表空間
由於空間不足已經被手動或自動刪除的表
以下依賴不被保護:
位圖索引
表之前刪掉的索引
閃回版本查詢
閃回版本查詢,通過它可以查詢到所有已經提交了的增刪改資訊,什麼時間段內提交了什麼樣的操作,根據時間同樣也可以方便的閃回表,
閃回版本查詢其格式如下:
例如:
select vid,vname,versions_operation,versions_starttime,versions_endtime
from versions_table
versions between timestamp minvalue and maxvalue
order by 1,4;
其中:between...and時間段;timestamp 時間;maxvalue最大值;minvalue最小值;versions指是乙個版本查詢;versions_operation:增刪改操作;versions_starttime:起始時間。
閃回事務查詢
閃回事務查詢實際上閃回版本查詢的乙個擴充,通過它可以查詢某個事務甚至撤銷乙個已經提交的事務。實現閃回事務查詢,需要先了解flashback_transaction_query檢視,從該檢視中可以獲取事務的歷史操作記錄以及撤銷語句(undo_sql)。
閃回事務查詢的步驟:
1. 通過閃回版本查詢獲取事務號(xid)
select tid,tname,versions_operation,versions_starttime,versions_endtime,versions_xid
from transaction_table
versions between timestamp minvalue and maxvalue
order by versions_xid;
2. 通過xid查詢flashback_transaction_query,獲取undo_sql
select operation,undo_sql
from flashback_transaction_query
where xid='0400140020040000';
注意,要查詢flashback_transaction_query檢視的資訊,需要有grant select any transaction to scott;的許可權。
專題實驗 oracle 閃回特性
在 oracle 9i 之前的版本中,如果使用者因為誤操作 delete 或 update 並提交了,那麼恢復這些使用者的操作錯誤是極其低效的.為此,oracle 提供了閃回功能,通過回退,我們可以找回正確的資料.通過閃回查詢我們可以按照時間戳或scn來向前查詢,獲取修改之前的資料映象,再通過ins...
oracle 10g的閃回特性
1.先介紹兩個表 select from tab 檢視有那些表 select from ind 檢視有那些索引 2.試驗指令碼 create table abc id int create index abc on abc id commit insert into abc values 1 ins...
oracle 資料閃回
select from scott.dept insert into scott.dept values 50,錯誤資料 china select from scott.dept as of timestamp to timestamp 2011 12 09 10 00 00 yyyy mm dd ...