欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

oracle閃回恢復(fù)數(shù)據(jù)主要方法(閃回查詢,閃回表,閃回庫,回收站恢復(fù))

 更新時間:2025年02月11日 10:13:03   作者:@睡不醒的每天@  
這篇文章主要介紹了閃回查詢、閃回表和閃回數(shù)據(jù)庫等數(shù)據(jù)庫恢復(fù)技術(shù),閃回查詢可以恢復(fù)指定時間點的數(shù)據(jù),閃回表可以將整個表恢復(fù)到過去某個時間點,閃回數(shù)據(jù)庫可以將整個數(shù)據(jù)庫回滾到過去某個時間點,需要的朋友可以參考下

概要

1、閃回查詢通常只能恢復(fù)幾小時內(nèi)的數(shù)據(jù),因為Undo表空間的大小和保留策略限制了舊數(shù)據(jù)版本的保留時間‌。

2、在進行閃回操作之前,建議備份當(dāng)前數(shù)據(jù)庫或相關(guān)數(shù)據(jù),以防止意外情況導(dǎo)致數(shù)據(jù)丟失。

3、閃回功能不依賴于日志,可以在線恢復(fù),無需關(guān)閉數(shù)據(jù)庫,操作簡單且恢復(fù)速度快‌1

閃回查詢恢復(fù)數(shù)據(jù)的主要方法包括:

基于時間的閃回查詢‌:

使用SELECT * FROM 表名 AS OF TIMESTAMP(時間點)語句,可以查詢并恢復(fù)在指定時間點之前的數(shù)據(jù)狀態(tài)‌。

例如,要查詢10分鐘前的數(shù)據(jù),可以使用SELECT * FROM 表名 AS OF TIMESTAMP(SYSDATE-10/1440)‌。

1、基于時間區(qū)間來恢復(fù):恢復(fù)前5分鐘數(shù)據(jù),前20分鐘數(shù)據(jù)等

未更新前:4

delete update insert更新后:2

根據(jù)更新后的時間來確定數(shù)據(jù)要恢復(fù)的時間,比如恢復(fù)5分鐘前的數(shù)據(jù)、20分鐘前的等等時間段;

查詢3分鐘前的數(shù)據(jù):

語法:

SELECT * FROM 表名 AS OF TIMESTAMP(SYSDATE-3/1440)?;

此時查詢到的數(shù)據(jù)為更新發(fā)生后,前3分鐘的數(shù)據(jù),相當(dāng)于原來的數(shù)據(jù),未改變的數(shù)據(jù)。

實際工作中可以根據(jù)具體時間來恢復(fù),此時數(shù)據(jù)已經(jīng)查到了原來的舊數(shù)據(jù),創(chuàng)建新表拷貝閃回查詢的數(shù)據(jù):

閃回查詢前10分鐘的數(shù)據(jù)并拷貝到新表test_old中:

SQL> create table test_old as select * from test1 as of timestamp(sysdate-10/1440);

表已創(chuàng)建。

SQL> select * from test_old;

        NO NAME
---------- ----------
         1 aa
         2 bb
         3 cc
         4 dd

閃回查詢的數(shù)據(jù)已經(jīng)拷貝到新表test_old中,然后將原來的表test1表刪除,將test_old表名修改未test1,整個閃回查詢恢復(fù)數(shù)據(jù)流程到此恢復(fù)完成結(jié)束。

2、基于具體的時間來恢復(fù):20250107 17:15:43 、20250106 17:15:43

未更新前數(shù)據(jù):

未更新前數(shù)據(jù)庫系統(tǒng)時間:

此時的時間為表未發(fā)生任何變化的系統(tǒng)時間節(jié)點,后期根據(jù)這個時間節(jié)點來恢復(fù)數(shù)據(jù),

更新表數(shù)據(jù):delete update insert

delete test_old where no='2'--刪除表中數(shù)據(jù)

表中操作已經(jīng)完成,查詢更新后的系統(tǒng)時間:

select to_char(sysdate,'yyyymmdd hh24:mi:ss') from dual  -- 更新表后的時間20250107 17:17:33

當(dāng)表中完成更新,得知更新前的系統(tǒng)時間和更新后的系統(tǒng),就可以根據(jù)具體時間來恢復(fù)數(shù)據(jù):

比如恢復(fù)到更新數(shù)據(jù)前系統(tǒng)的具體時間,上面第一次獲取的時間:

select * from test_old as of timestamp to_date('20250107 17:59:28','yyyymmdd hh24:mi:ss')   --恢復(fù)具體時間的數(shù)據(jù)

此時可以看到更新后,根據(jù)未更新前的系統(tǒng)時間來恢復(fù)了被更新的數(shù)據(jù),創(chuàng)建新表拷貝恢復(fù)的數(shù)據(jù),更新為原來的表,整個恢復(fù)流程完成,后期頻繁的去更新只要知道具體的時間一定時間內(nèi)都能正?;謴?fù)到為操作前的狀態(tài)。

更新中:…

基于scn閃回查詢恢復(fù)數(shù)據(jù)

1、獲取未操作前的scn值:

select  dbms_flashback.get_system_change_number from dual  --獲取當(dāng)前的scn 27511490  

此時scn值未任何操作時候的scn。

2、對表進行delete update insert(更新);

delete test_old where no=5;

更新成功,

3.獲取更新后的 scn:

此時更新操作前和操作后的值都獲取到了,可以更新scn數(shù)值區(qū)間進行閃回查詢:27511490- 27512132,

4、根據(jù)scn閃回查詢:

語法: select * from test_old as of scn 數(shù)值;select * from test_old as of scn 27511490–根據(jù)scn的區(qū)間來一步一進行閃回查詢 27511490- 27512132,之間取值

此時根據(jù)更新前的scn閃回查詢返回到了,未操作前的狀態(tài),然后新建立表拷貝閃回查詢的數(shù)據(jù)進行恢復(fù)即可:

create table test2_old as select * from test_old as of scn 27511490;

此時將scn閃回查詢的數(shù)據(jù)已經(jīng)恢復(fù)到新表中,可以對新表對象進行任何操作。

注意:

1、如果只有操作后的scn可以根據(jù)scn數(shù)據(jù)值大小一個一個去測試,知道閃回查詢

2、如果有操作前后區(qū)間的scn值,可以根據(jù)區(qū)間去一一測試,直到閃回查詢

···**閃回查詢只要查看過去具體時間點的數(shù)據(jù)變化**···

閃回表

如果表結(jié)構(gòu)沒有發(fā)生改變,并且用戶有flash any table權(quán)限,可以使用ALTER TABLE 表名 ENABLE ROW MOVEMENT和FLASHBACK TABLE 表名 TO TIMESTAMP(時間點)語句來將整個表閃回到指定的時間點‌45。

閃回數(shù)據(jù)庫‌:

閃回數(shù)據(jù)庫功能允許將整個數(shù)據(jù)庫回滾到過去某個時間點,但這通常用于更嚴重的災(zāi)難恢復(fù)場景,并且需要配置恢復(fù)區(qū)(Flash Recovery Area)‌2。

‌利用“回收站”恢復(fù)被DROP的表‌:

當(dāng)使用DROP命令刪除表時,Oracle并不會立即清空表所占用的空間,而是將表的信息放到一個虛擬的“回收站”中。在塊未被重新使用之前,可以通過查詢user_tables視圖或user_recyclebin來找到被刪除的表,并進行恢復(fù)‌

總結(jié)

到此這篇關(guān)于oracle閃回恢復(fù)數(shù)據(jù)的文章就介紹到這了,更多相關(guān)oracle閃回恢復(fù)數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論