ITPub博客

首页 > 数据库 > Oracle > Oracle 高水位处理方法

Oracle 高水位处理方法

原创 Oracle 作者:zhcunique 时间:2021-03-08 11:15:18 0 删除 编辑
  1. truncate

  2. MOVE
    ALTER TABLE TABLE_NAME MOVE;
    1 会锁表
    2 move是以block为单位重组数据,行的rowid都会跟着变化,索引会失效,需要重建索引。
    3 需要准备两倍的空间。
    3 MOVE之后,HWM降低了,空闲块也上去了。

  3. SHRINK SPACE CASCADE
    ALTER TABLE TABLE_NAME SHRINK SPACE;
    在执行该指令之前必须开启行移动。
    1 压缩segment,调整hwm,并马上释放空间
    2 shrink是以行为单位重组数据,根据复杂算法从逻辑+物理重组数据
    3 shrink的算法是从segment的底部开始,移动row到segment的顶部,移动的过程相当于delete/insert操作的组合,在这个过程中会产生大量的undo和redo信息。
    4 耗时可能非常长,通常慢于move。
    5 对于空间的要求,shrink不需要额外的空间。
    ALTER TABLE TABLE_NAME ENABLE ROW MOVEMENT;
    alter table <table_name> shrink space [ <null> | compact | cascade ];
    alter table shrink space compact cascade;
    ALTER TABLE TABLE_NAME DISABLE ROW MOVEMENT;
    cascade: 缩小表及其索引,并移动高水位线,释放空间,这个参数是在shrink table的时候自动级联索引,相当于rebulid index。
    compact: 仅仅是缩小表和索引,并不移动高水位线,不释放空间
    加上compact选项仅重新整理segment 空间,并压缩表的记录在以后进行release空间。
    但数据库并不调整hwm及释放空间.
    为了释放空间.你必须再发布alter table shrink space
    --compact用于把一个长操作分割为两个较短的操作
    如果在业务繁忙时做压缩,可以使用alter table shrink space compact来对表格进行碎片整理,而不调整高水位线,之后再次调用alter table table_name shrink space来释放空间。
    也可以使用alter table table_name shrink space cascade来同时对索引都进行收缩,这等同于同时执行alter index idxname shrink space。

  4. exp/imp或expdp/impdp

  5. 表重建
    create table t2 as select * from t1;
    drop table t1 purge;
    rename t2 to t1;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69994536/viewspace-2761672/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
先后就职于银行、券商等金融机构科技部门,从事数据库管理、自动化运维管理与系统运维相关工作,拥有Oracle 11g OCM/OCP证书,通过CFA二级考试。

注册时间:2021-02-04

  • 博文量
    73
  • 访问量
    499669