使用閃回查詢找到誤刪除的資料

2021-09-08 09:21:10 字數 1983 閱讀 5326

在oracle10g以後出現的閃回特性,可以讓我們在一些情況下方便的找回我們錯誤刪除的資料。

1.undo_retention引數預設900秒,很多時候我們需要調整這個引數如

alter system set undo_retention=18000 sid='*'

需要注意的是如果rac環境中,這樣寫會造成其他的節點掛起,需要使用下面的辦法

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

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

調大這個引數會增加undo表空間的擴充套件,大家需要注意

2.演示找回錯誤刪除的記錄(注意,資料庫必須處於歸檔模式下,非歸檔不能使用)

--1.建立測試使用者

--2.建立測試表

conn usr1/usr1

create table test (id int,name char(10));

--3.建立測試資料

insert into test(1,'test1');

insert into test(2,'test2');

commit; ---提交寫入redo log file

conn sys/oracle

alter system switch logfile; --手工切換日誌,寫入歸檔日誌,實際中如果得到條件會自動觸發

模式刪除操作,usr1使用者的

delete from test where id=1;

--這裡需要手工觸發歸檔,實際中不需要,因為其他操作可能觸發

conn sys/oracle

alter system switch logfile;

進行恢復操作

--1.首先查詢歸檔日誌的scn號

select name,first_change#,first_time from v$archived_log order by 3 desc

/opt/oracle/oradata/orcl/archive1/orcl_1_7_810405035.dbf 1733071 2013-3-20 16:16:21

/opt/oracle/oradata/orcl/archive1/orcl_1_6_810405035.dbf 1731283 2013-3-20 15:52:51

/opt/oracle/oradata/orcl/archive1/orcl_1_5_810405035.dbf 1731279 2013-3-20 15:52:47

--2.查詢當前的scn號

select dbms_flashback.get_system_change_number from dual; --1734414

--3.嘗試使用閃回查詢

select * from test as of scn 1733071;看看是否存在刪除的資料

select * from test as of scn &scn;輸入不同的scn號來檢查資料

發現1733071 時有資料,建立臨時恢復資料表進行操作

create table test_recov as select * from test as of scn 1733071; 

其實drop table也可以找回資料的,但是我還沒有試驗成功,後續會補充上。

除了上面使用閃回的方式直接找到資料外,另外還有一種辦法就是使用不完全恢復,但是這種方式需要有乙個測試機器,把資料恢復到測試機器上然後進行資料操作。

具體方式就是使用logminer來獲取scn號。原理是通過logmnr來獲取歸檔日誌中的資訊,這裡可以獲取完整的資訊,包括當時使用的語句,操作人資訊等,而這些資訊是使用v$archived_log所不能直接獲取到的,後面我會專門介紹logminer的使用。

誤刪除表記錄,閃回恢復

今天有個同事突然來找我,說他忘記注釋乙個表,刪除了4000多條記錄。把他給嚇的,說句實話當時我也嚇了一跳,不過想到庫是開著閃回的,而且是剛刪除,所以還有救。下面是我的操作過程 1 檢視當前表的記錄條數 select count from u.t 返回結果為449 2 查詢刪除前的記錄條數 selec...

oracle利用閃回找回誤刪除的表資料集

當我們在開發的過程,經常碰到由於不小心誤刪除表裡重要的資料,這時候你不需要著急,從oracle9i開始引用了閃回的概念,通過網上找資料,大概有兩種方法,一種方法是通過scn 找回,另外一種是可以通過時間來找回,僅獻給那些和我一樣在開發一線的朋友,希望對你們有所幫助 具體的語法如下 方法一 通過scn...

mysql 刪除回滾 Mysql資料誤刪除快速回滾

作者 video 極鏈科技opsteam 整理 包包 在資料庫操作中,難免會因為各種各樣的原因對資料造成損壞,這個時候就需要對資料庫快速恢復。傳統的方法會先恢復mysql備份,再去用mysqlbinlog抽取指定時間點的日誌,再恢復,這樣的操作比較耗時,容易出錯,那有沒有一種工具可以快速把誤刪除的操...