一、恢復drop刪除的表
flashback table tb_e_wear to before drop
二、恢復delete刪除的資料
1.flashback query
基於回滾段的閃回查詢(flashback query)功能
--閃回到某個時間點
select * from t_co_area as of timestamp to_timestamp (''2015-01-08 16:18:57'', ''yyyy-mm-dd hh24:mi:ss'') where ...
2.flashback table
flashback table不等於flashback query,flashbackquery僅僅是查詢以前的乙個快照點而已,並不改變當前表的狀態,而flashback table將改變當前表及附屬物件一起回到以前的時間點
注意:如果需要閃回乙個表,需要以下條件:
·需要有flashback any table的系統許可權或者是該錶的flashback物件許可權;
·需要有該錶的select,insert,delete,alter許可權;
必須保證該錶row movement。
比如:恢復線別資訊表中2015-01-06
17:00:00前刪除的資料
alter
table
t_co_area enable row movement;
flashback table
t_co_area
totimestamp
to_timestamp(
'2015-01-06 17:00:00'
,'yyyy-mm-dd hh24:mi:ss'
);//恢復到特定時間
flashback
table
t_co_area
totimestamp
systimestamp - interval '30' minute;//恢復到30分鐘前
3.flashback drop
oracle flashback drop特性提供乙個類似**站的功能,用來恢復不小心被刪除的表。當刪除表時,oracle 10g並不立刻釋放被刪除的表所占用的空間,而是將這個被刪除的表進行自動重新命名(為了避免同類物件名稱的重複)並放進**站中。所謂的**站類似於windows系統中
的**站,是乙個虛擬的容器,用於存放所有被刪除的物件,在**站中被刪除的物件將占用建立時的同樣的空間。如果這個被刪除的表需要
進行恢復,就可利用flashback drop功能。
例:進行乙個刪除表後恢復的簡單測試。
(1)顯示**站資訊
sql>show recyclebin;
可以看到,**站中是沒有任何結果的,表示沒有任何表在**站中。
(2)建立乙個表,並刪除,再次顯示**站資訊
sql>create table test_drop(name varchar2(10));
sql>drop table test_drop;
sql>drop table test_drop purge;--刪除乙個表且不放到**站中不能進行恢復,在drop語句中可以利用purge選項。
sql>show recyclebin;
(3)對被刪除的表進行恢復
sql>flashback table test_drop to before drop;
4.flashback version query
例如:在test表中,時間1插入一條記錄,時間2刪除了這條記錄,對於時間3執行select * from test當然查詢不到這條記錄,只能看到該錶最後的提交記錄。這時如果利用flash table或者是flash query,只能看到過去的某一時間點的乙個快照,而利flashback version query
,能夠把時間1、時間2的操作給記錄下來,並詳細的查詢出對表進行的任何操作。
select versions_starttime,
versions_endtime,
versions_xid,
versions_operation
from t_co_area versions between timestamp minvalue and maxvalue
在上述查詢中,列 versions_starttime、versions_endtime、versions_xid、versions_operation是偽列,還有一些偽列,如versions_startscn和versions_endscn顯示了該時刻的系統更改號。列versions_xid顯示了更改該行的事務識別符號
5.flashback transaction query
oracle flashback transaction query特性確保檢查資料庫的任何改變在乙個事務級別,可以利用此功能進行診斷問題、效能分析和審計事務。它其實是flashback version query查詢的乙個擴充,flashback version query說明了可以審計一段時間內錶的所有改變,但是也僅僅
是能發現問題,對於錯誤的事務,沒有好的處理辦法。而flashback transaction query提供了從flashback_transaction_query檢視中獲得事
務的歷史以及undo_sql(回滾事務對應的sql語句),也就是說審計乙個事務到底做了什麼,甚至可以回滾乙個已經提交的事務。
sql>select * from flashback_transaction_query
--查詢
create table 表名 as select語句--把查詢的結果根據結果集中的表結構和資料形成一張新錶。
如果只複製表結構,只需使查詢的條件不成立(比如where 1=2),就不會查詢從出任何資料,從而複製乙個表結構。
Oracle資料恢復
恢復delete掉的資料 恢復5分鐘之前的資料 insert into flow task 20130115 select from flow task 20130115 as of timestamp sysdate 5 1440 恢復時間點的資料。insert into flow task 20...
oracle資料恢復
分為兩種方法 scn和時間戳兩種方法恢復。一 通過scn恢復刪除且已提交的資料 1 獲得當前資料庫的scn號 select current scn from v database 切換到sys使用者或system使用者查詢 查詢到的scn號為 1499223 2 查詢當前scn號之前的scn sel...
Oracle資料恢復
昨天工作的時候執行了一套更改表資料的sql語句,但是忘了加限制條件,結果把一張表的一列值全都改了。今天在恢復的過程 先把測試庫和版本庫的這張表的資料匯出來,然後用版本庫的資料去覆蓋測試庫的資料。在匯出表的過程遇到報錯2016 4 19 星期二 16 00 00 is not a valid date...