Oracle中利用undo進行資料的恢複操作

來源:互聯網
上載者:User

Oracle中利用undo進行資料的恢複操作

【說明】無意中看到一個同事的QQ留言上面寫著“真累“,還沒有過30分鐘就接到這個同事的電話,如下:剛在做刪除資料的時候,發現由於條件沒有寫好,導致刪錯了,有沒有辦法恢複;接到這個任務 ,首先是深深的感慨了一下:人在狀態不好的情況下盡量多休息少做事,特別是涉及到很重要的事情。

跟著同事確定了出現問題的時間點後,先是安慰一下,讓他從那惶恐不安的心裡恢複過來,然後開始了找尋資料的工作。

【環境說明】

•資料庫版本:11.2.0.3

•資料庫閃回:未開啟

【恢複步驟】

【1】確定使用者刪除資料的時間點和指令碼,對於資料的恢複有很大的協助,最好再對比下使用者電腦上面的時間和伺服器上面的時間差,查詢的時候需要補上時間差(經檢查伺服器的時間和使用者電腦的時間相差5分鐘)

使用者反饋用戶端上面操作的時間時17:35分,但是伺服器的時間落後使用者的時間5分鐘,所以查詢指令碼如下:

select * from t_original_archives as of timestamp to_timestamp('2015-11-17 17:30:00','YYYY-MM-DD HH24:MI:SS')  where  id=1974244

【2】把資料匯出讓使用者進行檢查

create table t_original_archives_bak as select * from t_original_archives as of timestamp to_timestamp('2015-11-17 17:30:00','YYYY-MM-DD HH24:MI:SS')  where id=1974244;

【3】確認沒有問題後變可以把誤刪除的資料插入到原來的表中。

insert into t_original_archives select * from t_original_archives_bak

經過以上步驟,又一次拯救了一次資料災難;

整個恢複的過程中對於誤刪除時間的控制最為重要,一般15分鐘之內的資料庫可以找到,超過15分鐘的話要看天吃飯了。

以下是閃回查詢的原理。

Oracle資料庫的undo資料表空間用於存放資料刪除前的前鏡像,保證了資料的讀一致性。所以資料被更新或刪除的時候,資料並沒有馬上消失,而是會放在undo資料表空間裡面的。

SQL>  show parameter undo;

NAME                                              TYPE                      VALUE

------------------------------------ -----------  ------------------------------

_in_memory_undo                          boolean                  FALSE

undo_management                          string                    AUTO

undo_retention                              integer                      900

undo_tablespace                            string                    UNDOTBS1

參數說明:

undo_management = auto,設定自動undo自動管理方式,預設設定為:auto;

undo_retention = n(秒),設定決定undo最多的儲存時間,預設是900秒,建議條件允許的情況下可以設定多一些。

注意:並不是說系統一定會保留900秒的前鏡像,也不是900秒後保留的前鏡像就會消失,跟undo資料表空間的大小和系統的繁忙程度有關係。(一般情況15分鐘之內的資料可以被查詢得到的)

該參數的修改方式:SQL> alter system set undo_retention = 1800;

2、怎麼保證undo存放的資料的存放時間?

方法:通過使用RETENTION GRARANTEE子句,保證資料庫按照undo_retention的時間保留;

2.1 啟動保證保留

ALTER DATABASE UNDOTBS01 RETENTION GUARANTEE

2.2 關閉撤銷資訊的保證保留

ALTER DATABASE UNDOTBS01 RETENTION NOGUARANTEE

3、啟用RETENTION GRARANTEE的弊端

當啟用了該參數後,業務繁忙的情況下,當undo資料表空間的使用率100%的情況下,資料庫就會宕住,因為要保證undo的鏡像不被覆蓋,所以就不允許其他DDL語句的繼續執行;

4、UNDO資料表空間大小的設定

方法1:可以根據AWR報告給出的建議來設定UNDO資料表空間的大小。

方法2:在業務系統高峰期的情況下,隨時觀察UNDO資料表空間的使用方式,進行調整。

RMAN備份與恢複之undo資料表空間丟失

關於Oracle 釋放過度使用的undo資料表空間

Oracle undo的一些理解

Oracle undo 鏡像資料探究

Oracle 復原(ROLLBACK)和撤銷(undo)

Linux-6-64下安裝Oracle 12C筆記

在CentOS 6.4下安裝Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虛擬機器中安裝步驟

Debian 下 安裝 Oracle 11g XE R2

相關文章

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.