復雜的故事簡單說,復雜的問題簡單做,您好,這里是簡露一手,歡迎瀏覽。
概述
1:數(shù)據(jù)不小心刪除怎么辦?
2:存儲過程、函數(shù)多次編譯錯了怎樣辦?
關(guān)鍵點
閃回。
方法
- 刪除的數(shù)據(jù)恢復:
例如:找回User表1個小時前刪除的數(shù)據(jù)。
create table tmp_161228_user as
select * from User as of timestamp sysdate-1/24;
表tmp_161228_user 就是1個小時前的數(shù)據(jù)。
sysdate-1/24 可以寫具體的時間,如找回2016-12-28 22:10:01的數(shù)據(jù)則select * from User as of timestamp to_timestamp('2016-12-28 22:10:01','yyyy-mm-dd hh24:mi:ss');
- 刪除、修改的存儲過程(還有包或函數(shù)):
例如恢復TEST用戶下存儲過程SP_UP_ADDR
create table tmp_161228_sp_up_addr as
SELECT * FROM ALL_SOURCE AS OF TIMESTAMP TO_TIMESTAMP ('2016-12-28 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
WHERE OWNER='TEST' AND NAME ='SP_UP_ADDR'
存儲過程一般編譯次數(shù)頻繁,可以取多個時間段的存儲過程數(shù)據(jù)來得到準確的結(jié)果。
注:ALL_SOURCE是系統(tǒng)視圖,針對其恢復需要DBA權(quán)限,如果沒有DBA權(quán)限賬號 , 可以找管理員在后臺用SYS賬戶執(zhí)行, 然后查詢 SYS.tmp_161228_sp_up_addr表得到相應(yīng)時間點的存儲過程數(shù)據(jù)。
提點
失誤:凡人操作,總有失誤。而數(shù)據(jù)操作的刪除失誤往往是致命的,導致的結(jié)果大到能使整個系統(tǒng)癱瘓。
防范:通常的防范手段是備份,誤刪后從備份中取數(shù)據(jù)進行恢復,但備份需要額外的消耗和額外的程序處理,備份需要考慮的情況多,需要專業(yè)的人專業(yè)處理才有效果。
或許:不是專業(yè)的人,誤刪的時候,若能默默的恢復,彌補過錯,總是好的。
簡單應(yīng)用,希望對你有用。
<small>條件:Oracle10或以上版本且打開了閃回。</small>