1. 程式人生 > >快速恢復update了的orcale數據表

快速恢復update了的orcale數據表

分享 固定 沒有 delet into 都是 若是 全部 mes

在update的時候 沒有寫條件 將整個表中的數據全部都更新了,這時候怎麽辦呢?

orcale提供了以下的方法產看某一個時間戳, 所執行的sql的語句內容, 同時可以利用該這個時間戳查看當時語句執行顯示的結果

查出需要撤銷SQL 的執行時間:

SELECT last_load_time, sql_text  
FROM v$sql  
WHERE last_load_time IS NOT NULL  
and sql_text like ‘%你錯誤執行的sql%‘  
ORDER BY last_load_time DESC; 

說明:這個語句中除了like裏的字段 其他的都是固定的,like中寫的是你要恢復的那條sql中的一段 或者全部

執行結果如下:

技術分享

在上圖的執行結果裏, 找到你錯誤執行的那條sql的時間,我這裏錯誤執行語句的時間是第二條:2017-08-21/11:07:49
然後通過下面的sql,找回update之前的數據: 

select * from your_table
as of timestamp to_timestamp(‘2017-08-21/11:07:49‘,‘yyyy-mm-dd/hh24:mi:ss‘);

若是全表恢復:

1.將錯誤更新之前的數據新建一張表tableNameCopy 保存

create table tableNameCopy

as select * from tableName

as of timestamp to_timestamp(‘2017-08-21/11:07:49‘,‘yyyy-mm-dd/hh24:mi:ss‘);

2.刪除原表 tableName 中的所有被錯誤更新的數據

delete from tableName ;

3.將tableNameCopy 表中的數據寫入原表 tableName

insert into tableName select * from tableNameCopy;


------完美啦~

快速恢復update了的orcale數據表