由於一時的粗心,在做update操作時,忘記了加where條件,導致全表數據被修改。此類錯誤實屬不該!!特此記錄一下!!
網上搜索Oracle數據回退操作,介紹如下:
閃回級別 | 閃回場景 | 閃回技術 | 對象依賴 | 影響數據 |
數據庫 | 表截斷、邏輯錯誤、其他多表意外事件 | 閃回DATABASE | 閃回日志、undo | 是 |
DROP | 刪除表 | 閃回DROP | 回收站(recyclebin) | 是 |
表 | 更新、刪除、插入記錄 | 閃回TABLE | 還原數據,undo | 是 |
查詢 | 當前數據和歷史數據對比 | 閃回QUERY | 還原數據,undo | 否 |
版本查詢 | 比較行版本 | 閃回Version Query | 還原數據,undo | 否 |
事務查詢 | 比較 | 閃回Transaction Query | 還原數據,undo | 否 |
歸檔 | DDL、DML | 閃回Archive | 歸檔日志 | 是 |
閃回執行步驟:
1.查詢最近更新數據之前的數據(以便確定是不是Commit之前的數據)
時間是在最后更新之前的時間,既未做updata操作之前的時間
select * from T_PRODUCT as of timestamp to_timestamp('2019-09-05 11:10:00', 'yyyy-mm-dd hh24:mi:ss');
2.進行閃回操作前需要開啟行移動功能
alter table T_PRODUCT enable row movement;
3.執行閃回語句
flashback table T_PRODUCT to timestamp TO_TIMESTAMP('2019-09-05 11:10:00','yyyy-mm-dd hh24:mi:ss');
然后數據就回退到更新操作之前了。