【RECYCLEBIN】Oracle回收站詳解
Oracle 提供了很多保護資料的方法,其中回收站也是保護資料的一道防線, 本文以Oracle11.2.0.4 為例進行測試。
回收站功能預設開啟的,可以透過以下方式檢視:
SQL> show parameter recyclebinNAME TYPE VALUE------------------------------------ -------------------------------- ------------------------------recyclebin string on
如果透過drop命令重複刪除,回收站都會有記錄,為了避免恢復錯誤,可透過重新命名方式恢復到新表。但如果回收站所在表空間空間不足,在有新資料進入時,回收站按照先進先清的機制,清理回收站中物件,也建議定期清理回收站物件,避免因回收站佔用空間太大,影響資料庫的統計分析。再個需要注意的是,表所關聯的索引會隨著閃回表恢復,但名字依然是回收站命名方式。
回收站清理早期物件
示例,透過以下可以看出,當T6表資料量變大時,表空間只有500M,所以會清理掉回收站之前的物件,以保證新的資料插入。
SQL> select segment_name,bytes/1024/1024 from user_segments;SEGMENT_NAME BYTES/1024/1024------------------------ ---------------T3 80T4 .9375BIN$x6xk2qFzBvXgU3RQqMBXiA==$0 80BIN$x6xk2qFxBvXgU3RQqMBXiA==$0 80BIN$x6xk2qFyBvXgU3RQqMBXiA==$0 96SQL> create table t6 as select * from t3;Table created.SQL> insert into t6 select * from t6;703168 rows created.SQL> commit;Commit complete.SQL> insert into t6 select * from t6;1406336 rows created.SQL> commit;Commit complete.SQL> select segment_name,bytes/1024/1024 from user_segments;SEGMENT_NAME BYTES/1024/1024------------------------------- ---------------T3 80T4 .9375BIN$x6xk2qFzBvXgU3RQqMBXiA==$0 80T6 317SQL>
閃回表重新命名
示例
SQL> select object_name,OPERATION,TS_NAME,CREATETIME,DROPTIME,BASE_OBJECT from recyclebin;OBJECT_NAME OPERATION TS_NAME CREATETIME DROPTIME BASE_OBJECT------------------------------ --------- ------------------------------ ------------------- ------------------- -----------BIN$x6xk2qF3BvXgU3RQqMBXiA==$0 DROP T2021 2021-07-22:08:31:04 2021-07-22:08:38:33 158883BIN$x6xk2qFzBvXgU3RQqMBXiA==$0 DROP T2021 2021-07-22:08:31:27 2021-07-22:08:32:00 158884BIN$x6xk2qF0BvXgU3RQqMBXiA==$0 DROP T2021 2021-07-22:08:30:17 2021-07-22:08:37:49 158882SQL> select count(*) from "BIN$x6xk2qF3BvXgU3RQqMBXiA==$0"; COUNT(*)---------- 3107SQL> flashback table "BIN$x6xk2qF3BvXgU3RQqMBXiA==$0" to before drop rename to t3_new;Flashback complete.SQL> select segment_name,bytes/1024/1024 from user_segments;SEGMENT_NAME BYTES/1024/1024------------------------------ ---------------BIN$x6xk2qF0BvXgU3RQqMBXiA==$0 80T3_NEW .9375BIN$x6xk2qFzBvXgU3RQqMBXiA==$0 80T1 22T2 11T5 11T3 .06257 rows selected.
索引名字
示例
SQL> create table t9 as select * from dba_objects;Table created.SQL> create index t9_idx_id on t9(object_id);Index created.SQL> analyze table t9 compute statistics;Table analyzed.SQL> drop table t9;Table dropped.SQL> select object_name,type,OPERATION,TS_NAME,CREATETIME,DROPTIME,BASE_OBJECT from recyclebin order by droptime desc;OBJECT_NAME TYPE OPERATION TS_NAME CREATETIME DROPTIME BASE_OBJECT------------------------------ ------------------------- --------- ------------------------------ ------------------- ------------------- -----------BIN$x6xk2qF8BvXgU3RQqMBXiA==$0 INDEX DROP T2021 2021-07-22:08:54:01 2021-07-22:08:56:41 158892BIN$x6xk2qF9BvXgU3RQqMBXiA==$0 TABLE DROP T2021 2021-07-22:08:53:22 2021-07-22:08:56:41 158892BIN$x6xk2qF0BvXgU3RQqMBXiA==$0 TABLE DROP T2021 2021-07-22:08:30:17 2021-07-22:08:37:49 158882BIN$x6xk2qFzBvXgU3RQqMBXiA==$0 TABLE DROP T2021 2021-07-22:08:31:27 2021-07-22:08:32:00 158884SQL> flashback table "BIN$x6xk2qF9BvXgU3RQqMBXiA==$0" to before drop;Flashback complete.SQL> select index_name,table_name from user_indexes;INDEX_NAME TABLE_NAME------------------------------ ------------------------------BIN$x6xk2qF8BvXgU3RQqMBXiA==$0 T9BIN$x6xk2qF6BvXgU3RQqMBXiA==$0 T1_NEWSQL> show parameter recyclebinNAME TYPE VALUE------------------------------------ -------------------------------- ------------------------------recyclebin string onSQL> --可透過以下方式為索引重新命名,建議閃回表後進行統計資訊收集SQL> alter index "BIN$x6xk2qF4BvXgU3RQqMBXiA==$0" rename to t1_new_ind;--關閉回收站命令參考SQL> ALTER SYSTEM SET RECYCLEBIN=OFF;System altered.SQL> ALTER SESSION SET RECYCLEBIN=OFF;Session altered.
其他
進行drop table操作時,如果加入了purge,該物件是不會存在回收站中。
drop table t9 purge;--清理回收站 某張表SQL> purge table "BIN$x6xk2qF0BvXgU3RQqMBXiA==$0";Table purged.SQL> --清理回收站SQL> purge recyclebin;Recyclebin purged.SQL> --清理所有SQL> purge dba_recyclebin;DBA Recyclebin purged.SQL>
Flashback Drop限制
- 僅適用於非系統、本地管理的表空間。
- 回收站沒有固定大小。物件保留在回收站中的時間可能會有所不同。如果表空間受到空間壓力,回收站將被清空。回收站不會導致資料檔案自動擴充套件,因此在某些情況下,可以很快清除物件。
- 回收站中的物件僅限於查詢操作(沒有DDL或DML)。
- 閃回查詢操作必須引用回收站名稱。
- 表和所有相關物件將同時放入回收站、恢復並從中清除。
- 具有細粒度訪問策略的表不受回收站的保護。
- 分割槽索引組織的表不受回收站保護。
- 回收站不保留引用完整性。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014851/viewspace-2867410/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle10g的回收站(recyclebin)和自由空間管理Oracle
- oracle 回收站功能Oracle
- Hadoop回收站及fs.trash引數詳解Hadoop
- Oracle SCN詳解Oracle
- oracle rowid詳解Oracle
- ORACLE -詳解SCNOracle
- ORACLE的HINT詳解Oracle
- Oracle練習詳解Oracle
- oracle oradebug使用詳解Oracle
- ORACLE基礎之oracle鎖(oracle lock mode)詳解Oracle
- Oracle回收站表閃回機制研究Oracle
- oracle: default role 詳解(轉)Oracle
- Oracle中job的使用詳解Oracle
- 一、oracle 高水位線詳解Oracle
- Oracle GoldenGate常用引數詳解OracleGo
- oracle rac 核心引數詳解Oracle
- Oracle中pivot函式詳解Oracle函式
- oracle 密碼詳解以及破解Oracle密碼
- oracle連線查詢詳解Oracle
- Oracle的表空間quota詳解Oracle
- Oracle SCN機制詳細解讀Oracle
- 詳解oracle資料庫閃回Oracle資料庫
- 【FLASHBACK】Oracle閃回及回收站相關語句參考Oracle
- 【INDEX】Oracle分割槽索引技術詳解IndexOracle索引
- 【DATAGUARD】Oracle Dataguard體系架構詳解Oracle架構
- ORACLE中Cursor_sharing引數詳解Oracle
- [20220606]purge dba_recyclebin後臺操作.txt
- Oracle minus用法詳解及應用例項Oracle
- oracle中的processes,session,transaction引數詳解OracleSession
- 詳解Oracle AWR執行日誌分析工具Oracle
- oracle partition by group by,詳解partition by和group by對比Oracle
- 19_深入解析Oracle undo原理(3)_ktuxe詳解OracleUX
- 20_深入解析Oracle undo原理(4)_ktuxc詳解OracleUX
- Oracle資料庫備份還原詳解XKUSOracle資料庫
- bash回收站
- Linux回收站Linux
- Oracle 18c新特性詳解:In-Memory 專題Oracle
- oracle正規表示式regexp_like的用法詳解Oracle