Oracle中recyclebin的保留策略
Oracle中recyclebin的保留策略
我们知道,Oracle 10g引入了recyclebin的概念,当我们删除一个表的时候,若不指定purge,系统只是将这个表重命名为BIN$开头的名称,并在数据字典中修改相关的数据。
Administrator's Guide中是这么描述recyclebin的:recycle bin实际上是一个包含了删除的对象的相关信息的数据字典表。被删除的表以及相关的对象(比如索引、约束、嵌套表等等)并没有被移除,并且依然占用着空间。它们会继续使用用户的空间配额,直到明确将它们从回收站中清除,或者是另一种很少见的情况:由于表空间的空间限制,数据库必须将它们清除。
由此我们可以知道,在Oracle 10g以后,若启用了recyclebin功能,当你drop一个表的时候,它会仍然占用着原来的空间。
我们可以使用user_recyclebin或dba_recyclebin来查看回收站中的对象信息,或者使用recyclebin,它是user_recyclebin的公共同义词。
文档中提到了,除了手动purge,这些回收站中的对象只有在表空间出现空间不足情况时才会被清除。我们可以做个测试(测试环境为RAC10.2.0.1+ASM)
新建一个表空间,给它20m的容量
- SQL> create tablespace test1 datafile size 20m;
- Tablespace created.
- SQL> create table w1.a tablespace test1 as select * from dba_objects;
- Table created.
- SQL> select owner,segment_name,round(bytes/1024/1024,2)||' MB' m from dba_segments where tablespace_name='TEST1';
- OWNER SEGMENT_NAME M
- ------------ ---------------------------------------------------------------------------------------
- W1 A 6 MB
- SQL>
- SQL> create table w1.b tablespace test1 as select * from dba_objects;
- Table created.
- SQL> create table w1.c tablespace test1 as select * from dba_objects;
- Table created.
- SQL> select round(sum(bytes)/1024/1024,2)||' MB' from dba_segments where tablespace_name='TEST1';
- ROUND(SUM(BYTES)/1024/1024,2)||'MB'
- -------------------------------------------
- 18 MB
- SQL> drop table w1.a;
- Table dropped.
- SQL> drop table w1.b;
- Table dropped.
- SQL> drop table w1.c;
- Table dropped.
- SQL> select owner,object_name,original_name from dba_recyclebin where ts_name='TEST1';
- OWNER OBJECT_NAME
- ------------------------------ ------------------------------
- ORIGINAL_NAME
- --------------------------------
- W1 BIN$r6HZooW/xpzgQKjAb01Spw==$0
- B
- W1 BIN$r6HZooW+xpzgQKjAb01Spw==$0
- A
- W1 BIN$r6HZooXAxpzgQKjAb01Spw==$0
- C
- SQL> col owner format a4
- SQL> col segment_name format a35
- SQL> col m format a10
- SQL> select owner,segment_name,round(bytes/1024/1024,2)||' MB' m from dba_segments where tablespace_name='TEST1';
- OWNE SEGMENT_NAME M
- ---- ----------------------------------- ----------
- W1 BIN$r6HZooXAxpzgQKjAb01Spw==$0 6 MB
- W1 BIN$r6HZooW+xpzgQKjAb01Spw==$0 6 MB
- W1 BIN$r6HZooW/xpzgQKjAb01Spw==$0 6 MB
- SQL>
|
评论暂时关闭