ITPub博客

首页 > 数据库 > Oracle > Oracle 数据文件回收

Oracle 数据文件回收

原创 Oracle 作者:dmcatding 时间:2020-04-25 23:06:34 0 删除 编辑

--模拟数据插入

DECLARE

  I NUMBER(10);

BEGIN

  FOR I IN 1 .. 50000 LOOP

       INSERT INTO TEST_TAB VALUES (I, 'TESTSTRING');

   END LOOP;

 COMMIT;

END;

/



PL/SQL procedure successfully completed.


TEST88@nopdb>select count(*) from TEST_TAB;


  COUNT(*)

----------

     50000

     

     

SYS@nopdb>select file_id, max(block_id) from dba_extents where file_id=7 group by file_id;


   FILE_ID MAX(BLOCK_ID)

---------- -------------

         7        155776


SYS@nopdb>select file_id,round(max(block_id)*8/1024) HWMsize from dba_extents where file_id=7 group by file_id;


   FILE_ID    HWMSIZE

---------- ----------

         7       1217

         

         

         

--MOVE 操作

TEST88@nopdb>alter table TEST_TAB move online;


Table altered.


TEST88@nopdb>select count(*) from TEST_TAB;


  COUNT(*)

----------

     50000

     

     

SYS@nopdb>select file_id,round(max(block_id)*8/1024) HWMsize from dba_extents where file_id=7 group by file_id;


   FILE_ID    HWMSIZE

---------- ----------

         7       1290


SYS@nopdb>select file_id, max(block_id) from dba_extents where file_id=7 group by file_id;


   FILE_ID MAX(BLOCK_ID)

---------- -------------

         7        165120

         

         

--说明使用了新块;



--查看表空间使用

TABLESPACE_NAME                          AUTOEXTENSIBLE  CURRENT_SPACE_G CURRENT_USED_G MAX_SIZE_G TOTAL_USED_PCT

---------------------------------------- --------------- --------------- -------------- ---------- --------------

TEST88                                   NO                            2            .01          2            .00



SYS@nopdb>alter database datafile 7 resize 1g;

alter database datafile 7 resize 1g

*

ERROR at line 1:

ORA-03297: file contains used data beyond requested RESIZE value


--此时证明确实不能回收空块,因为分给表块并没有回收




--对表进行truncate 

TEST88@nopdb>truncate table TEST_TAB;


TEST88@nopdb>select count(*) from TEST_TAB;


  COUNT(*)

----------

         0



SYS@nopdb>select file_id, max(block_id) from dba_extents where file_id=7 group by file_id;


   FILE_ID MAX(BLOCK_ID)

---------- -------------

         7        163984


SYS@nopdb>select file_id,round(max(block_id)*8/1024) HWMsize from dba_extents where file_id=7 group by file_id;


   FILE_ID    HWMSIZE

---------- ----------

         7       1281

Table truncated.


表空间使用率:

TABLESPACE_NAME                          AUTOEXTENSIBLE  CURRENT_SPACE_G CURRENT_USED_G MAX_SIZE_G TOTAL_USED_PCT

---------------------------------------- --------------- --------------- -------------- ---------- --------------

TEST88                                   NO                            2              0          2            .00


--移动到其它表空间

TEST88@nopdb>alter table TEST_TAB move tablespace users online;


Table altered.


--在移动回来

TEST88@nopdb>alter table TEST_TAB move tablespace TEST88 online;


Table altered.


SYS@nopdb>select file_id, max(block_id) from dba_extents where file_id=7 group by file_id;


   FILE_ID MAX(BLOCK_ID)

---------- -------------

         7           136


SYS@nopdb>select file_id,round(max(block_id)*8/1024) HWMsize from dba_extents where file_id=7 group by file_id;


   FILE_ID    HWMSIZE

---------- ----------

         7          1

         

SYS@nopdb>alter database datafile 7 resize 2m;


Database altered.


测试结果:只有移动其它表空间才可以释放已经申请的块。DROP 应该也可以的。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30327022/viewspace-2688378/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: SQL优化1
请登录后发表评论 登录
全部评论
此BLOG仅作为个人笔记记录,如有误肯请各位指正,谢谢!

注册时间:2015-07-04

  • 博文量
    91
  • 访问量
    190125