oracle闪回某个时间点的数据库,oracle11g 使用闪回查询恢复表到过去某一个时间点...
一、新建測試表并插入數(shù)據(jù):oracle
二、模擬表數(shù)據(jù)誤刪并提交:測試
三、使用閃回查詢來查誤刪前表的數(shù)據(jù):(表誤刪是在15:08分左右誤刪,所以在15:08分以前表的數(shù)據(jù)仍是在的):spa
四、用如今的數(shù)據(jù)與誤刪前的數(shù)據(jù)作對比,找出被誤刪的數(shù)據(jù):.net
五、恢復被誤刪的數(shù)據(jù),3d
方法一:直接用insert into插入被誤刪的數(shù)據(jù),使用insert into插入誤刪的數(shù)據(jù),則原來未刪除的數(shù)據(jù)的rowid不變;blog
方法二:使用flashback 恢復,使用flashback恢復其實是將表里面的數(shù)據(jù)delete,而后從新插入整個表的數(shù)據(jù),表里面每行數(shù)據(jù)的rowid所有改變。若是表的數(shù)據(jù)很大,則閃回的時間也會相對久一點:事務
flashback table test to timestamp to_timestamp('2019-10-11 11:00:00','yyyy-mm-dd hh24:mi:ss');flash
若是執(zhí)行上面flashback報錯:ORA-08189: cannot flashback the table because row movement is not enabled.(ORA-08189: 由于未啟用行移動功能, 不能閃回表),則執(zhí)行下列語句"啟用行移動功能"
alter table table_name enable row movement; it
總結(jié):
oracle閃回查詢使用的是undo表空間,閃回查詢能恢復的時間點取決于undo表空間的大小和Undo_Retention參數(shù)有關。若是系統(tǒng)中Undo管理比較不合理,事務Undo數(shù)據(jù)量比較大并且頻繁,有失效的Undo前鏡像被覆蓋以后,偏偏有一個長時間查詢須要訪問這個前鏡像。這個時候,Oracle就只能說“抱歉”了,這也就是經(jīng)典的ora-1555 snapshot too old的起源。io
undo_retention從直接看就是設置Oracle Undo過時數(shù)據(jù)的保存期限,單位是秒。若是參數(shù)設置為900秒,那么Undo段數(shù)據(jù)在非Active狀態(tài)以后,會保留900秒。
若是根據(jù)這個守則,咱們進行一致讀和Flashback的時間就是經(jīng)過這個參數(shù)來進行控制的。可是事實上,這個是有問題的。Undo的覆蓋動做是一個必然的過程,覆蓋與否是要和系統(tǒng)事務Undo消耗速率、Undo Tablespace大小乃至Undo數(shù)據(jù)文件可拓展性密切相關。
事實上,Undo_retention是一個“目標指望值”。用戶設置出這個值以后,Oracle內(nèi)部會盡可能保證將Undo數(shù)據(jù)保留超過undo_retention設置的時間。在這個過程當中,Oracle會涉及到好比嘗試拓展Undo表空間數(shù)據(jù)文件、Undo Segment管理等內(nèi)容。可是,若是“現(xiàn)實比較殘酷”,好比說Undo使用緊張、沒有額外的方法,那么這個時間段也是不能保證的。
總結(jié)部份內(nèi)容摘自:http://blog.itpub.net/27785870/viewspace-1777263/
總結(jié)
以上是生活随笔為你收集整理的oracle闪回某个时间点的数据库,oracle11g 使用闪回查询恢复表到过去某一个时间点...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十字连接焊盘_你应该知道的焊盘基础知识
- 下一篇: 计算机二级excel经典操作题,计算机二