oralce恢復誤刪除的表中的資料(閃回、閃回查詢)
今天,有個朋友和我說,他有個同事誤操作將oracle中一個表誤刪除了,
一開始我以為是drop掉了,於是建議閃回表,但是回收站裡找不到;
後來才知道是delete了所有資料,於是建議回滾或者用閃回查詢的辦法將資料找回來,
但是遇到快照太舊的問題,資訊被覆蓋了,只能找回部分記錄了;
得知有備份,於是建議用備份在測試機上嘗試恢復;
下面做個簡單的實驗:
SQL> desc test
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------
A VARCHAR2(10)
C NUMBER
D CHAR(10)
SQL> select * from test;
A C D
---------- ---------- ----------
def 2
dd 2 ff
defg 1
SQL> delete from test;
已刪除3行。
SQL> select * from test;
未選定行
SQL> rollback;
SQL> select * from test;
A C D
---------- ---------- ----------
def 2
dd 2 ff
defg 1
SQL> delete from test;
已刪除3行。
SQL> commit;
提交完成。
SQL> select * from test;
未選定行
SQL> conn zxh/zxh
已連線。
SQL> flashback table test to before drop rename to test;
flashback table test to before drop rename to test
*
第 1 行出現錯誤:
ORA-38305: 物件不在回收站中
SQL> conn / as sysdba
已連線。
SQL> show parameter recyclebin
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
3472744
SQL> select * from zxh.test;
未選定行
SQL> select * from zxh.test as of scn 3472700;
未選定行
SQL> select * from zxh.test as of scn 3472600;
A C D
---------- ---------- ----------
def 2
dd 2 ff
defg 1
SQL> insert into zxh.test select * from zxh.test as of scn 3472600;
已建立3行。
SQL> commit;
提交完成。
SQL> select * from zxh.test;
A C D
---------- ---------- ----------
def 2
dd 2 ff
defg 1
SQL> conn zxh/zxh
已連線。
SQL> select * from test;
A C D
---------- ---------- ----------
def 2
dd 2 ff
defg 1
SQL> drop table test;
表已刪除。
SQL> commit;
提交完成。
SQL> flashback table test to before drop rename to test;
閃回完成。
SQL> commit;
提交完成。
SQL> select * from test;
A C D
---------- ---------- ----------
def 2
dd 2 ff
defg 1
SQL>
恢復成功。
總結:
誤刪除表
如果是drop,這個命令是DDL語句,刪除的資訊儲存在回收站(前提是recyclebin設定為on)中,這樣可以從回收站中將表閃回;
如果是delete,這個命令是DML語句,刪除的資訊儲存在undo中,可以用閃回查詢的辦法將資料恢復,多次嘗試查詢scn閃回查詢,儘可能的恢復到執行誤操作的前一個點(如果回滾段太小,有可能碰到經典的快照太舊問題)。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21256317/viewspace-776790/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DM7閃回與閃回查詢
- Orcale利用閃回功能恢復資料
- MySQL使用binlog2sql閃回誤刪除資料MySql
- Oracle 11G 閃回技術 閃回版本查詢和閃回事務查詢Oracle
- Oracle閃回功能恢復偶然丟失的資料(轉)Oracle
- DM8 閃回查詢
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- Flashback Drop閃回刪除功能實踐
- Oracle閃回技術 為Oracle閃回配置資料庫Oracle資料庫
- MySQL誤刪資料?試試資料閃回工具binlog2sqlMySql
- 【Flashback】Flashback Drop閃回刪除功能實驗
- flashback query閃回資料
- Oracle資料庫閃回Oracle資料庫
- MySQL資料庫表誤刪除恢復(一)MySql資料庫
- Oracle 11G 閃回技術 使用Oracle閃回事務查詢Oracle
- MySQL閃回技術之binlog2sql恢復binlog中的SQLMySql
- 【DB寶43】MySQL誤操作閃回恢復利器之my2sqlMySql
- 【NetApp資料恢復案例】針對NetApp誤刪除資料的恢復APP資料恢復
- Oracle 閃回資料庫測試Oracle資料庫
- my2sql資料閃回SQL
- 詳解oracle資料庫閃回Oracle資料庫
- 【儲存資料恢復案例】Netapp誤操作刪除lun的資料恢復資料恢復APP
- 【儲存資料恢復】NetApp儲存誤刪除的資料恢復案例資料恢復APP
- 【oracle資料庫資料恢復】誤操作導致的資料庫誤刪除的資料恢復案例Oracle資料庫資料恢復
- Oracle drop分割槽表單個分割槽無法透過閃回恢復Oracle
- 誤刪除資料了怎麼辦?小編交易誤刪除資料的恢復方法
- 恢復Oracle資料庫誤刪除資料的語句Oracle資料庫
- 【伺服器資料恢復】LINUX誤刪除、格式化的資料恢復伺服器資料恢復Linux
- 【伺服器資料恢復】NetApp儲存誤刪除的資料恢復案例伺服器資料恢復APP
- dg_閃回資料庫實驗資料庫
- 工具分享丨資料閃回工具MyFlash
- Sybase ASE資料庫恢復,Sybase資料恢復,資料誤刪除恢復工具READSYBDEVICE資料庫資料恢復dev
- linux下恢復誤刪除oracle的資料檔案LinuxOracle
- 【伺服器資料恢復】NetApp儲存中lun被誤刪除的資料恢復過程伺服器資料恢復APP
- USB快閃記憶體盤中的檔案被誤刪除,但容量沒有減少,如何恢復?記憶體
- 【儲存資料恢復】HP EVA儲存誤刪除VDISK的資料恢復案例資料恢復
- 【伺服器資料恢復】EMC Unity儲存誤刪除的資料恢復案例伺服器資料恢復Unity
- 【伺服器資料恢復】EMC Isilon儲存誤刪除的資料恢復案例伺服器資料恢復
- 【資料庫資料恢復】LINUX環境下ORACLE資料庫誤刪除的資料恢復資料庫資料恢復LinuxOracle