在建表的时候已经提示没有剩余的空间分配了,
但是在查看dba_tablespace_usage_metrics这个视图的时候,这个表空间的使用率并不是100%,只有80%左右,有没有兄弟遇到过这个问题的?

解决方案 »

  1.   

    应该是空间碎片的问题.
    虽然后空间,但是最大的连续空间已经不能满足建表时第一个extent的容量要求.
      

  2.   

    可以使用export和import重整下表空间看看.
      

  3.   

    表空间太大了,不适合用exp和imp来整理吧
      

  4.   

    好像没见到有什么其他好办法.你可以google下表空间碎片的解决方案
      

  5.   

    建个小表试试看,对表段进行收缩,如果该表空间存在索引段,也可以收缩一下。
    使用 alter table tbname shrink space 来收缩表段
    实现原理
    实质上构造一个新表(在内部表现为一系列的DML操作,即将副本插入新位置,删除原来位置的记录)
    靠近末尾处(右边)数据块中的记录往开始处(左边)的空闲空间处移动(DML操作),不会引起DML触发器
    当所有可能的移动被完成,高水位线将会往左移动(DDL操作)
    新的高水位线右边的空闲空间被释放(DDL操作)
    实现前提条件
    必须启用行记录转移(enable row movement)
    仅仅适用于堆表,且位于自动段空间管理的表空间(堆表包括:标准表,分区表,物化视图容器,物化视图日志表)如果要使得索引变小,则需要重构索引
    alter index idx_name rebuild online;
    alter index idx_name online tablespace tbs_name  --将索引重构到不同的表空间