Oracle的資料恢複——Flashback用法匯總

來源:互聯網
上載者:User

標籤:

/*

11g的flashbackup 分好幾種,分別用途不一樣。

A.flashback database 閃回資料庫,簡單理解就是把資料庫閃回到某個以前的時間點,

能恢複到的最早的SCN, 取決與Flashback Log中記錄的最早SCN

B.flashback drop 回收資料庫表,用於表誤drop後恢複。類似Windows的資源回收筒。

C.flashback query 閃回表記錄,用於資料表記錄的恢複

D.falshabck Table 閃回資料庫表,

後兩個是重點,下面說明。

*/

– A.flashback database相關

/*

1.預設情況資料庫的flashback database是關閉,可以在mount exclusive狀態下開啟。

在設定了閃回恢複區後,可以啟動閃回資料庫功能。

*/

–1.檢查是否啟動了flash recovery area

show parameter db_recovery_file

–2.檢查是否啟用了歸檔

archive log list;

–3.flashback database 預設是關閉的,查看方法

select flashback_on from v$database;

–4.查詢當前的scn

SELECT CURRENT_SCN FROM V$DATABASE;

–5.查詢當前的時間

select to_char(sysdate,’yy-mm-dd hh24:mi:ss’) time from dual;

–6.查看SCN 和 timestamp 之間的對應關係:

select scn,to_char(time_dp,’yyyy-mm-dd hh24:mi:ss’)from sys.smon_scn_time;

–7.恢複到時間點,或者恢複到SCN

flashback database to timestamp to_timestamp(’09-10-14 14:37:05′,’yy-mm-dd hh24:mi:ss’);

flashback database to scn 947921;

– B. flashback table 恢複誤drop表

drop table sphsy.login_table;

select * from flash_table;

–purge table sphsy.login_table;清空資源回收筒

flashback table sphsy.login_table to before drop;

select * from sphsy.login_table;

– C. flashback query 實現行級恢複

/*

flashback查詢用於擷取先前時間點的表行級資料。當使用flashback查詢時,

需要在表名後指定as of timestamp子句或as of SCN子句,其中as of timestamp用於指定早期時間點,

而as of SCN用於指定早期的SCN值,樣本如下:

*/

– 1.查原始記錄 ,區間內有62 行

select *

from sphsy.login_table a

where a.id > 201204171078

and a.id < 201204171141

order by a.id ;

– 2.晚於區間的有 3016

select program,count(*)

from sphsy.login_table a

where a.id >= 201204171141

group by program ;

–3. 刪除

delete from sphsy.login_table a

where a.id > 201204171078

and a.id < 201204171141

–4.利用閃回特性查到區間內,有62行

select * from sphsy.login_table

as of timestamp to_timestamp(’2012-04-17 17:20:30′,’YYYY-MM-DD HH24:MI:SS’)

where id > 201204171078

and id < 201204171141

– 5.不利用閃回特性,直接查詢發現沒有

select * from sphsy.login_table

where id > 201204171078

and id < 201204171141

– 6.進行資料恢複

– 禁止表上的觸發器

alter trigger sphsy.T_INS_LOGIN_TABLE disable ;

– 恢複資料

insert into sphsy.login_table

select * from sphsy.login_table

as of timestamp to_timestamp(’2012-04-17 17:20:30′,’YYYY-MM-DD HH24:MI:SS’)

where id > 201204171078

and id < 201204171141

– 恢複觸發器

alter trigger sphsy.T_INS_LOGIN_TABLE enable ;

– 7.晚於區間的資料回來了3130 = 3016 +62 + 後來的資料。實現了區間恢複誤刪除。

select program,count(*)

from sphsy.login_table a

where a.id >= 201204171078

group by program ;

– D. flashback table 恢複表到先前狀態

/*

flashback查詢可以用於恢複被誤刪除的表行資料,但是使用者在表上執 行了其他的DML語句誤操作(insert或update),則不能直接使用flashback查詢將表資料恢複到先前時間點,從oracle10g開 始,使用flashback table語句可以將表恢複到先前時間點,通過使用該特徵,可以避免執行基於時間點的不完全恢複,注意如果要在某個表上使用flashback table特徵,則要求必須具有以下條件:

a.使用者必須具有flashback any table系統許可權或flashback對象許可權

b.使用者必修在表上具有select insert delete和alter許可權

c.必須合理設定初始化參數undo_retention,以確保UNDO資訊保留足夠時間

d.必須啟用行移動特徵:alter table table_name enable row movement;

*/

– 1.查原始記錄 ,區間內有62 行

select *

from sphsy.login_table a

where a.id > 201204171078

and a.id < 201204171141

order by a.id ;

– 2.晚於區間的有 3074

select count(*)

from sphsy.login_table a

where a.id >= 201204171141;

–3. 刪除 ,先記下時間點,2012-04-17 17:43:46

select to_char(sysdate,’YYYY-MM-DD HH24:MI:SS’) from dual ;

delete from sphsy.login_table a

where a.id > 201204171078

and a.id < 201204171141

– 4.刪除之後表 sphysy.login_table繼續有修改 ,行3082

select count(*)

from sphsy.login_table a

where a.id >= 201204171141;

–5.啟用行移動特徵

alter table sphsy.login_table enable row movement

–6.利用閃回特性,直接恢複到刪除時間點前

flashback table sphsy.login_table to timestamp to_timestamp(’2012-04-17 17:43:46′,’YYYY-MM-DD HH24:MI:SS’);

– 7.晚於區間的資料 回到了3080 ,說明時間點之後的修改丟失。

select count(*)

from sphsy.login_table a

where a.id >= 201204171141

– 8.往前推1分,恢複到刪除之前,刪除的62條也回來了。

flashback table sphsy.login_table to timestamp to_timestamp(’2012-04-17 17:40:46′,’YYYY-MM-DD HH24:MI:SS’);

– 62 行

select count(*)

from sphsy.login_table a

where a.id > 201204171078

and a.id < 201204171141

– 刪除之後的資料為3074,代表還有修改丟失。

select count(*)

from sphsy.login_table a

where a.id >= 201204171141

/*

總結:方法C,方法D均可以用資料恢複。

方法C安全,恢複麻煩。方法D簡單,有可能資料丟失。

*/

Oracle的資料恢複——Flashback用法匯總

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.