Oracle 数据文件回收

发布时间:2020-08-10 06:46:42 作者:dmcatding
来源:ITPUB博客 阅读:127

--模拟数据插入

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 应该也可以的。

推荐阅读:
  1. oracle系列(五)高级DBA必知的Oracle的备份与恢复(全录收集)
  2. oracle各种恢复场景列举及演示

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

oracle 文件 回收

上一篇:配置PLSQL Developer详细步骤

下一篇:搭建百万 PV 网站架构

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》