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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用閃回查詢恢復誤刪除的資料
- 閃回查詢恢復誤刪資料
- Oracle閃回查詢恢復delete刪除資料Oracledelete
- 閃回刪除、閃回查詢
- Oracle閃回刪除恢復誤刪資料Oracle
- 閃回查詢找到誤刪除資料
- 回閃查詢查詢刪除的資料
- (f)--閃回恢復區---實踐2---閃回表(閃回DML部分資料會用到閃回查詢)
- 閃回表、閃回查詢
- 閃回查詢之閃回表查詢
- 【備份恢復】 閃回技術之閃回刪除
- 閃回恢復一個表中的資料
- 基本閃回查詢和閃回表
- 閃回查詢恢復過程
- 【備份恢復】閃回技術之閃回版本查詢
- Oracle閃回誤刪的表Oracle
- 閃回查詢之閃回版本查詢
- 10g裡的閃回表命令-- 表的刪除和恢復
- 【閃回特性之閃回查詢】使用閃回查詢(select as of)
- 【備份恢復】閃回資料庫(一)閃回資料庫的管理資料庫
- 閃回(關於閃回查詢)
- FlashBack總結之閃回資料庫與閃回刪除資料庫
- 使用oracle 閃回查詢找回誤更新的資料Oracle
- 閃回技術一:閃回查詢
- 利用undo的閃回特性恢復錯誤操作的表
- 閃回查詢
- Oracle資料庫的閃回恢復區Oracle資料庫
- oracle的閃回查詢Oracle
- oracle的回閃查詢Oracle
- Oracle閃回刪除Oracle
- DM7閃回與閃回查詢
- 閃回技術查詢資料
- Oracle 閃回刪除表原理分析Oracle
- Oracle閃回查詢,閃回版本查詢與閃回事務查詢的使用區別總結Oracle
- 【備份恢復】閃回資料庫(五)RMAN 命令列閃回資料庫資料庫命令列
- 【備份恢復】閃回資料庫(二) 基於 SCN 閃回資料庫資料庫
- Orcale利用閃回功能恢復資料
- 循序漸進oracle第8章:Oracle的閃回特性之恢復truncate刪除表的資料Oracle