一个空表初始化时已占用5M空间,INITIAL 5M,如果不想删除表,怎样才能减小空表占用的空间。

解决方案 »

  1.   

    表的初始化大小在建表的地方可以指定,一般都用默认值吧
    CREATE TABLE ACC_97
    (
        ACC_NBR                        VARCHAR2(10) NOT NULL,
        SEQ                            NUMBER(3,0) DEFAULT 0 NOT NULL,
        PROD_ID                        NUMBER(12,0) DEFAULT 0,
        STS                            VARCHAR2(1) DEFAULT 0,
        STS_DATE                       DATE DEFAULT sysdate,
        ATTR                           VARCHAR2(1) DEFAULT 0,
        PAUSE_STS                      VARCHAR2(1) DEFAULT 0,
        ACC_INDEX                      VARCHAR2(10)
    )
    PCTFREE 10
    PCTUSED 40
    MAXTRANS 255
    TABLESPACE aa
    STORAGE(INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 36384 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
    NOCACHE
    LOGGING
      

  2.   


    ALTER TABLE t DEALLOCATE UNUSED 如果表示空的话 truncate table t drop storage
      

  3.   

    重定义表的initial size
    可以使用keep option
    e.g.
    alter table t deallocate unused keep 10K;