oracle recyclebin和flashback

chenfengwww發表於2012-07-17
select * from dba_recyclebin where owner = 'GAPS1' and type = 'TABLE'
flashback table YW_CUPSATM_HXDZMX to before drop
select * from dba_audit_trail
檢視所有使用者許可權
select * from dba_role_privs t where t.granted_role='DBA'[@more@]

Oracle10G以前執行drop table後表就即被刪除了。10G後引入了垃圾回收站的概念recyclebin。如果仍只是drop table xxx,表不會立即被刪除,而是被暫時放入回收站。
可以保障某些誤操作後還可以將表還原。

1.檢視資料庫是否開戶recyclebin功能
SQL> show parameter recyclebin;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on

或者只將當前會話開啟功能
alter session set recyclebin = on;
2.檢視當前使用者中的垃圾回收站的物件:
select * from recyclebin;

3.drop table xxx時,不希望將表放入垃圾回收站,而是直接drop
drop table xxx purge;

4.將recyclebin中物件還原或清除
--還原
flashback table "xxxxx" to before drop
"xxxx"乃是recyclebin檢視中OBJECT_NAME欄位名稱
flashback table "xxxxx" to before drop
亦可換成
flashback table "xxxxx" to before drop rename to xxxx重新命名

--清除
purge table xxxx

purge
還可以指定某個表空間和某個使用者下表。

ps:
recycelbin中還保留了index。
如個表空間不夠建立新物件時,oracle將自動請除recyclebin中的物件。
以下幾種drop不會將相關物件放進RecycleBin:

* drop tablespace:會將RecycleBin中所有屬於該tablespace的物件清除
* drop user:會將RecycleBin中所有屬於該使用者的物件清除
* drop cluster:會將RecycleBin中所有屬於該cluster的成員物件清除
* drop type:會將RecycleBin中所有依賴該type的物件清除


刪除索引: purge index origenal_indexname

如果清空回收站:

purge recyclebin;


FLASHBACK閃回表

今天誤刪除表裡面的資料,透過FLASHBACK閃回,

flashback table mmdb.column_class_def_t to timestamp to_timestamp('2009-03-24 14:40:00','yyyy-mm-dd hh24:mi:ss');

出現因為未啟用行移動功能,不能閃回表。

執行alter table mmdb.column_class_def_t enable row movement;然後再執行FLASHBACK,OK

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22036495/viewspace-1058825/,如需轉載,請註明出處,否則將追究法律責任。

相關文章