您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Orcale如何利用閃回功能恢復(fù)數(shù)據(jù),小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
從9i開始,Oracle提供了閃回(FLASHBACK)功能。使用FLASHBACK TABLE語句從撤消段中(undo segment)讀取該表的過去映像,并利用Oracle9i中引入的回閃查詢重建表行。UNDO_RETENTION給出了閃回支持的最小時(shí)間。也就是說,F(xiàn)LASHBACK最少可以支持UNDO_RETENTION給出的時(shí)間,如果系統(tǒng)比較閑,則可以閃回更長(zhǎng)的時(shí)間。(當(dāng)然,如果回滾表空間的空間分配不足,當(dāng)系統(tǒng)處于忙時(shí),有可能重用還沒有達(dá)到UNDO_RETENTION時(shí)間限制的數(shù)據(jù)的空間)。使用閃回的一個(gè)前提是表不能進(jìn)行DDL操作。不但不能對(duì)DDL操作進(jìn)行回閃,而且,也無法閃回到DDL操作以前的數(shù)據(jù)了。
一.delete誤刪
方法1:如果表結(jié)構(gòu)沒有改變,直接閃回整個(gè)表,具體步驟:
--首先需要表閃回權(quán)限,開啟行移動(dòng)功能
alter table 表名 enable row movement;
--執(zhí)行閃回恢復(fù)表數(shù)據(jù)到某個(gè)時(shí)間點(diǎn)
flashback table 表名 to timestamp to_timestamp(‘恢復(fù)的時(shí)間點(diǎn)','yyyy-mm-dd hh34:mi:ss');
--關(guān)閉行移動(dòng)功能
alter table 表名 disable row movement;
方法2:查詢被刪除數(shù)據(jù),再執(zhí)行insert
insert into 表名 (select * from 表名 as of timestamp to_timestamp('恢復(fù)的時(shí)間點(diǎn)','yyyy-mm-dd hh34:mi:ss'));
二.drop誤刪
原理:由于oracle在刪除表時(shí),沒有直接清空表所占的塊,oracle把這些已刪除的表的信息放到了一個(gè)虛擬容器“回收站”中,而只是對(duì)該表的數(shù)據(jù)塊做了可以被覆寫的標(biāo)志,所以在塊未被重新使用前還可以恢復(fù)。
1.如果記得被刪的表名,直接閃回
flashback table 原表名 to before drop;
2.不記的表明,先從“回收站”找到唄刪除的表,再執(zhí)行恢復(fù):
-- 查詢被刪除的表,table_name或者object_name就是刪除后在回收站中被重新命名的表名
select table_name,dropped from user_tables;
select object_name,original_name,type,droptime from user_recyclebin;
-- 執(zhí)行恢復(fù)
flashback table "回收站中的表名" to before drop rename to 新表名;
三.閃回整個(gè)數(shù)據(jù)庫
alter database flashback on;
flashback database to scn SCNNO;
flashback database to timestamp to_timestamp('恢復(fù)的時(shí)間點(diǎn)','yyyy-mm-dd hh34:mi:ss');
關(guān)于“Orcale如何利用閃回功能恢復(fù)數(shù)據(jù)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。