利用閃回拯救我們的資料(三)
在上篇裡,我們說明了閃回表的功能和使用。在本篇中,我們先來看一些閃回表的特點。之後一起來分析閃回表的原理。
SYS使用者物件不能閃回
SYS使用者是Oracle系統中的超級使用者,肩負著執行資料庫啟動、關閉、備份等管理職責。在物件控制上,SYS使用者可以訪問所有物件和資料。所以,一般都建議不要直接使用SYS進行實際日常DBA工作。
在閃回這個問題上,SYS使用者是受到限制的。下面我們使用SYS使用者實驗閃回特性。
SQL> conn / as sysdba;
已連線。
SQL> show user;
USER 為 "SYS" //確定是以sys使用者登入的
SQL> create table t as select * from dba_objects;
表已建立。
SQL> select count(*) from t;
COUNT(*)
----------
50331
SQL> show parameter recyclebin; //當前開啟的是閃回模式
NAME TYPE VALUE
------------------------- ----------- -----------
recyclebin string on
SQL> drop table t;
表已刪除。
SQL> show recyclebin; //沒有閃回記錄
SQL> select * from user_recyclebin;
未選定行
看來,當我們使用sys使用者進行預設表空間(sys使用者的預設表空間為system)資料表drop的時候,是不會被閃回的。Oracle內部也不支援這種操作。
那麼,這種特點是針對SYS的呢?還是針對system表空間的呢?我們繼續下面的實驗,建立一張資料表在users表空間
-- Create table
create table t
(
id number(10) not null
)
tablespace USERS
storage
(
initial 64K
minextents 1
maxextents unlimited
);
//準備資料
SQL> insert into t select object_id from dba_objects;
50331 rows inserted
SQL> commit;
Commit complete
//確認資料表所在的表空間
SQL> select table_name,tablespace_name from all_tables where wner='SYS' and table_name='T';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
T USERS
//刪除資料表
SQL> drop table t;
表已刪除。
//顯示回收站
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
T BIN$kLlt43leRJGNWtQMB/yTaQ==$0 TABLE 2011-01-28:00:14:18
顯然,閃回機制對system表空間資料表是不進行閃回的。
結論:使用sys使用者的閃回要注意,當建立資料表是在system表空間下的時候,是不支援閃回特性的。
閃回表回收站——兩個檢視
使用方面,閃回特性還要關注兩個回收站檢視。all_recyclebin、dba_recyclebin。
all/user/dba三層結構,我們熟悉Oracle的朋友一定不會陌生。Oracle中大部分物件都提供了以這三個作為字首的命名檢視。三層的檢視表示的都是一種型別物件,都是對後設資料表的對映。
最低一個層次是user_檢視,表示當前使用者所屬的schema下的物件。其次是all_檢視是當前使用者所能訪問、具有訪問許可權的物件資訊。物件的owner可能不是當前使用者,但是因為具有訪問許可權,也是可能被訪問到。最高的是dba_檢視,通常只有DBA使用者才能訪問到該層面檢視,常用來作為全域性物件。
recyclebin系列檢視也是類似的作用。檢視中可以查詢到回收站中的物件資訊。
SQL> desc dba_recyclebin;
Name Type Nullable Default Comments
-------------- ------------ -------- ------- --------------------------------------------------------
OWNER VARCHAR2(30) Name of the original owner of the object
OBJECT_NAME VARCHAR2(30) New name of the object
ORIGINAL_NAME VARCHAR2(32) Y Original name of the object OPERATION VARCHAR2(9) Y Operation carried out on the object
TYPE VARCHAR2(25) Y Type of the object
TS_NAME VARCHAR2(30) Y Tablespace Name to which object belongs
CREATETIME VARCHAR2(19) Y Timestamp for the creating of the object
DROPTIME VARCHAR2(19) Y Timestamp for the dropping of the object
DROPSCN NUMBER Y SCN of the transaction which moved object to Recycle Bin
PARTITION_NAME VARCHAR2(32) Y Partition Name which was dropped
CAN_UNDROP VARCHAR2(3) Y User can undrop this object
CAN_PURGE VARCHAR2(3) Y User can purge this object
RELATED NUMBER Parent objects Obj#
BASE_OBJECT NUMBER Base objects Obj#
PURGE_OBJECT NUMBER Obj# for object which gets purged
SPACE NUMBER Y Number of blocks used by this object
注意其中幾個欄位:包括原物件名、現在物件名稱、刪除時間等。這些可以幫助我們瞭解到物件的回收機制。注意其中的canpurge和canundrop兩個標誌,表示當前這個回收站物件時候可以進行操作。
同時,我們注意到回收站檢視中是沒有all_檢視的。這其實也比較好理解:回收站是屬於物件所有者的回收站。建立回收站的目的是為了將刪除的物件可以閃回,將物件閃回的許可權,還是控制在物件原有所有者或者DBA使用者手中比較好。
在回收站空間管理上,也要關注purge命令的使用。我們是可以直接對recyclebin使用purge命令的。相對於上面的命令格式,這種方式其實更加簡單直接。
ü purge user_recyclebin;
ü purge dba_recyclebin;
SQL> select * from dba_recyclebin;
OBJECT_NAME ORIGINAL_NAME
------------------------------ ----------------
BIN$kLlt43leRJGNWtQMB/yTaQ==$0 T
(結果資料段有省略…)
SQL> purge user_recyclebin;
Done
SQL> purge dba_recyclebin;
Done
SQL> select object_name, original_name from dba_recyclebin;
OBJECT_NAME ORIGINAL_NAME
--------------- --------------------------------
//物件被清理
結論:使用dba_recyclebin和user_recyclebin可以比較容易的看到整個資料庫和當前使用者物件的回收站。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-686494/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用閃回拯救我們的資料(五)
- 利用閃回拯救我們的資料(四)
- 使用閃回挽救我們的資料
- 使用閃回拯救我們的資料(二)
- 利用flashback閃回表和資料
- Orcale利用閃回功能恢復資料
- 閃回(關於閃回資料庫)資料庫
- 【備份恢復】閃回資料庫(三)基於時間戳閃回資料庫資料庫時間戳
- 資料庫的閃回資料庫
- 利用binlog2sql閃回丟失資料SQL
- 利用可靠還原點進行資料庫閃回資料庫
- 閃回資料庫資料庫
- 【備份恢復】閃回資料庫(一)閃回資料庫的管理資料庫
- Oracle閃回技術之閃回資料庫Oracle資料庫
- 閃回資料庫的事情資料庫
- restore point特色二&閃回資料庫特性(三)REST資料庫
- Oracle資料庫閃回Oracle資料庫
- flashback query閃回資料
- Oracle閃回資料庫Oracle資料庫
- Oracle閃回技術 為Oracle閃回配置資料庫Oracle資料庫
- Oracle 閃回技術 概覽 資料庫閃回功能Oracle資料庫
- (f)--閃回恢復區---實踐2---閃回表(閃回DML部分資料會用到閃回查詢)
- 【備份恢復】閃回資料庫(五)RMAN 命令列閃回資料庫資料庫命令列
- 【備份恢復】閃回資料庫(二) 基於 SCN 閃回資料庫資料庫
- FlashBack總結之閃回資料庫與閃回刪除資料庫
- Flashback Database 閃回資料庫Database資料庫
- Oracle閃回資料歸檔Oracle
- 監視閃回資料庫資料庫
- 實驗-閃回資料庫資料庫
- 【DG】利用閃回資料庫(flashback)修復Failover後的DG環境資料庫AI
- 資料庫基於版本的閃回資料庫
- 開啟資料庫的閃回功能:資料庫
- oralce恢復誤刪除的表中的資料(閃回、閃回查詢)
- 清除閃回資料歸檔區資料
- Backup And Recovery User's Guide-使用閃回資料庫-開啟閃回資料庫GUIIDE資料庫
- Oracle 閃回資料庫測試Oracle資料庫
- 詳解oracle資料庫閃回Oracle資料庫
- 基於SCN閃回資料庫資料庫