对于ORACLE当中数据的反复存储和删除,造成碎片过多。如何才能重新组织,使消失碎片。

解决方案 »

  1.   

    这要看你参数设置,如果表空间PCTINCREASE不为0,系统会定期启动SMON,合并表空间
    中相领的存储碎片,也可以手工合并碎片,   alter tablespace <空间名>  coalesce;使用语句可以监视碎片的状态 select ,block_id,bytes,blocks from dba_free_space   where tablespace_anme=<空间名> 
     
     order  by block_id;
      

  2.   

    1、
    select tablespace_name,count(*) from dba_free_space group by tablespace_namealter tablespace tablespacename coalesce;
    2、
    exp->imp
      

  3.   

    1.快速整理破碎的表(在Oracle8i里边才可以这样使用)ALTER TABLE table_name  MOVE ( TABLESPACE  XXX);如何移动一张表所在的表空间方法一:1.  Export 这张表
    2.  Drop这张表
    3.  Create table xxx tablespace xxx;
    4.  Imp Ignore=y还要注意的一点是,所有要读取这张表的PL/SQL储存过程都会失效。需要重新编译。1.  SELECT * FROM DBA_OBJECTS WHERE STATUS = 'INVALID';2.  对这些包,函数,过程重新编译。