使用閃回查詢恢複誤刪除的資料

來源:互聯網
上載者:User

閃回查詢通過對復原段中儲存的前鏡像資料進行追溯,可以獲得變更之前的資料,從而在前鏡像被覆蓋之前,提供一種快捷的恢複和回退方式。

閃回特徵受到初始化參數UNDO_RETENTION的影響,

ALTER SYSTEM SET UNDO_RETENTION=10800 SCOPE=BOTH; 增大這個參數可能會導致更多的UNDO資料表空間使用。

在生產環境中修改這樣一個參數需要謹慎:

1.盡量在測試後在生產環境中執行某行特定的維護操作。

2.在生產環境空閑時才執行某些特定的維護操作。

在Oracle 10gR1 RAC環境下修改UNDO_RETENTION參數,使用如下命令:

alter system set undo_retention=18000 sid='*';

這條命令直接導致RAC的其他節點掛起,Oracle記錄了一個相關的Bug,Bug號為4220405,Oracle提示不指定具體SID的UNDO_RETENTION修改在該版本中不被支援,可分別修改不同的執行個體。

通過閃回查詢恢複誤碼刪除資料的執行個體:

資料庫運行在歸檔模式下,可以首先通過V$ARCHIVED_LOG視圖來確認資料庫的SCN變化:

SQL> col fscn for 99999999999999999999999

SQL> col nscn for 9999999999999999999999

SQL>select name,FIRST_CHANGE# fscn,NEXT_CHANGE# nscn,FIRST_TIME from v$archived_log;

獲得當前的SCN

SQL>select dbms_flashback.get_system_change_number fscn from dual;

使用應用使用者嘗試閃回:

SQL> connect username/password

現在資料:

SQL>select count(*) from hs_passport;

建立恢複表如下:

SQL>create table hs_passport_recov as select * from hs_passport where 1=0;

根據開發人員提供的大致誤操作時間,結合V$ARCHIVED_LOG視圖,選擇適當SCN向前執行閃回查詢:

SQL>select count(*) from hs_passport as of scn 12929970422;

嘗試多個SCN,擷取最佳值(如果能得知具體時間,那麼可以獲得準備的資料閃回);

SQL>select count(*) from hs_passport as of scn &scn:

最後選擇恢複SCN時間點

SQL>insert into hs_passport_recov select * from hs_passport as of scn 129.....

向當前表中補回誤碼刪除的資料並確認資料是否補擠,至此閃回恢複成功。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.