我在oracle11G下有一个分区表,其中占空间较大的是两个blob字段。
按月进行分区,通常保留两个月的分区,
最近业务量较大,表所在的表空间不断申请新的数据文件,导致asm盘组空间不足,多次报警。
现在的处理方法是删除上个月的分区
查看表空间dba_free_space已经多出来2T。
但是数据文件如何删除呢?asm盘组还是只剩下300多G,有些隐患。

解决方案 »

  1.   

    看一下shrink命令
      

  2.   

    参考一下https://www.linuxidc.com/Linux/2017-02/141115.htm
      

  3.   

    我这个问题还不是高水位线的问题,
    整个分区都被删除了,也不存在高水位线的问题,
    只是分区删除后释放出来大量的空间,由于双12业务量大,所以占用空间也大,
    后续是不会用到这么多空间的,
    目前asm盘组只剩了300多G,我想把分区表所在的表空间中的部分数据文件删除,把空间返回给asm盘组。
    但alter tablespace xxxxx drop datafile 'xxxxxxxxxx'
    报错,说数据文件还被占用,查看segments,数据文件中也确实被分配了。
    但是里面应该都是空的。
    如何解决这个问题呢?
      

  4.   

    数据文件offline 试试
      

  5.   

    应该先 truncate 分区 再删 好像是马上释放资源。
    你这些数据文件是否还有 其它schema的对象 ,如索引。
      

  6.   

    每个分区使用单独的表空间的话,应该可以直接 drop 表空间。下次添加分区之前, 先建一个表空间,单独给这个分区用。添加分区的时候指定表空间。
      

  7.   

    两个方法
    1、导出数据,收缩表数据文件,再导入数据。
    2、新建一个表空间,再 move 到新表空间,再删除原表空间。