oracle使用update後閃回恢復資料

2021-10-10 11:22:59 字數 1410 閱讀 8500

使用update後忘記加條件導致全表更新可以使用,閃回技術恢復資料。

閃回技術:oracle提供了四種可供使用的閃回技術(閃回查詢,閃回刪除,閃回歸檔,閃回資料庫)

一、閃回查詢

1.查詢某個操作是幾時執行的時間點

--例查詢2020-11-11執行的update語句

select t.sql_text, t.first_load_time

from v$sqlarea t

where t.sql_text like 'update%' and t.first_load_time like '2020-11-11%'

order by t.first_load_time desc

2.閃回查詢:可以查詢到某個時間點的資料庫狀態:

select * from  tablename as of timestamp to_timestamp('2020-11-11 22:00:00','yyyy-mm-dd hh24:mi:ss');
3.資料恢復

--1.開啟表的 row movement

alter table tablename enable row movement

--2.閃回到指定時間的資料狀態

flashback table tablename to timestamp to_timestamp('2020-11-11 16:06:00','yyyy-mm-dd hh24:mi:ss');

--3.關閉表的 row movement

alter table tablename disable row movement

撤銷段:oracle中乙個邏輯結構,因為大部分閃回技術都需要依賴撤銷段中的撤銷資料。撤銷資料是反轉dml語句結果所需的資訊,只要某個事務修改了資料,那麼更新前的原有資料就會被寫入乙個撤銷段。(事務回滾也會用到撤銷段中的資料)。事務啟動時,oracle 會為其分配乙個撤銷段

閃回表可能會失敗,有可能有以下幾種情況:

違反了資料庫約束,比如使用者不小心刪除了子表中的資料,現在想利用閃回表技術進行回退,恰好在這中間,父表中與該資料對應的那條記錄也被刪除了,在這種情況下,由於違反了外來鍵約束,導致閃回表操作失敗了;

撤銷資料失效,比如用於支撐閃回操作的撤銷資料被覆蓋了,這種情況閃回表操作自然會失敗;

閃回不能跨越ddl,即在閃回點和當前點之間,表結構有過變更,這種情況閃回操作也會失敗

所以,在需要使用閃回功能去恢復資料的時候,最短時間發現錯誤,第一時間執行閃回操作,才能最大程度地保證閃回功能的成功。

Oracle批量Update記錄

工作中經常用到oracle批量更新記錄,做為老手也怕出錯,總之要小心再小心,確保資料批量更新正確。下面舉乙個例子 1 建立兩張結構類似的表,建表語句如下 create table jayt1 id int,code varchar2 8 create table jayt2 id int,code ...

update提交後表資料恢復

一 全表恢復 1.建立恢復表 create table table recover as select from table as of timestamp to timestamp 2019 03 18 15 30 30 yyyy mm dd hh24 mi ss 時間為更改前的時間 2.刪除原表...

ORACLE 多表關聯 UPDATE 語句

oracle 多表關聯 update 語句 兩表 多表 關聯update 僅在 where 字句中的連線 直接賦值 update customers a 使用別名 set customer type 01 where exists select 1 from tmp cust city b wher...