使用閃回拯救我們的資料(二)
宣告:本篇思路和知識點源自eygle老師作品。
本篇是筆者《使用閃回拯救我們的資料》系列之二。在Oracle9i之後,資料庫閃回技術逐漸成熟。到10g時,資料庫閃回已經成為一套比較完整的資料恢復方案。
提到閃回flashback,要注意Oracle的閃回技術是由幾個相對獨立的技術實現的。
ü 資料庫級別閃回:flashback database。將整個資料庫快速恢復到一個時間點;
ü 資料表級別閃回:將資料表全部恢復到過去的一個時間點上,或者對已經刪除掉的資料表恢復;
ü 行級別閃回:設定指定的時間點,可以查詢到該時間點的特定資料行;
ü 事務閃回:可以將按照事務的單位,將資料庫變更閃回;
我們已經在本系列的第一篇中,介紹過行級別的閃回,可以將制定時間的資料行匯出。在本篇中,我們介紹一下資料表級別的閃回。
在實際開發和維護中,我們有時候會遇到把資料表drop掉的情況。過去這種情況,我們只能透過之前保留的備份,進行不完全的備份。這樣的工作量很大也很麻煩。從Oracle10g起,引入了回收站的機制,將drop掉的資料表儲存在回收站中。當發現誤刪除的時候,可以透過回收站回收資料表。
回收站機制類似於我們在Windows上的回收站。在windows中,當我們選擇刪除一個檔案時,本質上並沒有將檔案從硬碟上刪除,只是將檔案以一種形式改名,這樣就能從回收站中看到。
Oracle的回收站也是採用同樣的原理。下面我們做一個簡單的實驗。
首先,確定系統引數。在Oracle10g中,有一個引數recyclebin,控制資料表回收站機制的啟動和關閉。
//用sys帳號登入,確定recyclebin引數
SQL> conn sys/sys@orcl as sysdba;
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as SYS
SQL> show parameter recyclebin;
NAME TYPE VALUE
------------------------------------ ----------- ------
recyclebin string on //當取值為on的時候,表示開啟回收站功能;
SQL>
之後,我們以scott使用者登入進去,演示刪除一張資料表。
SQL> conn scott/tiger@orcl;
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as scott
//建立資料表
SQL> create table t as select * from all_objects;
Table created
SQL> select count(*) from t;
COUNT(*)
----------
40712
之後刪除資料表。
SQL> drop table t;
Table dropped
SQL> select * from t;
select * from t
ORA-00942: 表或檢視不存在
在sqlplus(注意:只能在sqlplus/sqlplusw中檢視到)中,使用show recyclebin命令,可以看到當前回收站的情況資訊。
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
T BIN$jJvR2eVETmKH1JE6yBQ2og==$0 TABLE 2011-01-25:22:30:52
記錄的內容顯而易見,有一個物件原名為T,在回收站中的名稱為“BIN$…”。原來的物件型別為資料表,是在XXX時間被刪除。
如果這個時候確定說刪除是一個錯誤,需要恢復,簡單的使用flashback命令,就可以了。
//使用閃回命令,將資料表t閃回到刪除之前的狀態去
SQL> flashback table t to before drop;
閃回完成。
SQL> select count(*) from t;
COUNT(*)
----------
40712
//資料恢復
一個簡單的命令,就可以挽回我們誤操作的結果了。
那麼,如果我們不需要這個物件了,需要完全的刪除。我們需要怎麼做呢?而且,在windows的回收站裡,檔案在清空回收站之前是還會佔用硬碟空間的。Oracle的回收站裡面既然儲存資料,那麼必然要消耗資料庫空間。
我們可以使用purge命令,對回收站的資訊進行清除。
SQL> drop table t;
表已刪除。
SQL> purge table t; //清除表
表已清除。
SQL> show recyclebin;
SQL> flashback table t to before drop; //嘗試閃回,失敗
flashback table t to before drop
*
第 1 行出現錯誤:
ORA-38305: 物件不在回收站中
同時,purge命令還提供了不同的操作粒度,如下:
ü purge table
ü purge tablespace
ü purge tablespace
那麼,如果我們不想透過回收站進行刪除操作,希望在drop資料表的時候完全刪除,怎麼做呢?
SQL> select count(*) from t;
COUNT(*)
----------
40712
SQL> drop table t purge; //使用purge關鍵字,相當是說“不希望轉入回收站”
表已刪除。
SQL> show recyclebin;
談到drop一個資料表,就不能不說truncate table操作。truncate操作具有操作快的特點,那麼truncate命令是否支援閃回呢?
SQL> select count(*) from t;
COUNT(*)
----------
40712
SQL> truncate table t; //截斷資料表
表被截斷。
SQL> show recyclebin;
SQL> flashback table t to before drop; //沒有在回收站中,也就必然不能支援閃回了;
flashback table t to before drop
*
第 1 行出現錯誤:
ORA-38305: 物件不在回收站中
那麼,flashback drop的原理是如何的呢?回收站機制是怎麼進行操作的呢?在下一次我們繼續一起研究。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-684631/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用閃回挽救我們的資料
- 利用閃回拯救我們的資料(五)
- 利用閃回拯救我們的資料(三)
- 利用閃回拯救我們的資料(四)
- 【備份恢復】閃回資料庫(二) 基於 SCN 閃回資料庫資料庫
- 閃回(關於閃回資料庫)資料庫
- 資料庫的閃回資料庫
- 閃回技術二:閃回表
- 閃回資料庫資料庫
- 使用閃回查詢備份資料
- Backup And Recovery User's Guide-使用閃回資料庫-開啟閃回資料庫GUIIDE資料庫
- 【備份恢復】閃回資料庫(一)閃回資料庫的管理資料庫
- Oracle閃回技術之閃回資料庫Oracle資料庫
- 閃回資料庫的事情資料庫
- restore point特色二&閃回資料庫特性(三)REST資料庫
- 閃回資料庫測試之二 :通過read only檢視閃回的結果資料庫
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-閃回資料庫的限制GUIIDE資料庫
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-閃回資料庫GUIIDE資料庫
- Oracle資料庫閃回Oracle資料庫
- flashback query閃回資料
- Oracle閃回資料庫Oracle資料庫
- Backup And Recovery User's Guide-使用閃回資料庫來回退資料庫-監控閃回資料庫GUIIDE資料庫
- 使用oracle 閃回查詢找回誤更新的資料Oracle
- Backup And Recovery User's Guide-使用閃回資料庫來回退資料庫-閃回資料庫的先決條件GUIIDE資料庫
- Backup And Recovery User's Guide-使用閃回資料庫-監控閃回資料庫對效能的影響GUIIDE資料庫
- Oracle閃回技術 為Oracle閃回配置資料庫Oracle資料庫
- Oracle 閃回技術 概覽 資料庫閃回功能Oracle資料庫
- Backup And Recovery User's Guide-使用閃回資料庫來回退資料庫-執行閃回資料庫操作GUIIDE資料庫
- Backup And Recovery User's Guide-使用閃回資料庫-為最優的閃回資料庫效能配置環境GUIIDE資料庫
- (f)--閃回恢復區---實踐2---閃回表(閃回DML部分資料會用到閃回查詢)
- 【備份恢復】閃回資料庫(五)RMAN 命令列閃回資料庫資料庫命令列
- 使用閃回查詢恢復誤刪除的資料
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-閃回資料庫視窗GUIIDE資料庫
- FlashBack總結之閃回資料庫與閃回刪除資料庫
- Flashback Database 閃回資料庫Database資料庫
- Oracle閃回資料歸檔Oracle
- 監視閃回資料庫資料庫
- 實驗-閃回資料庫資料庫