Oracle 使用analyze分析索引碎片

1、先分析索引,语句如下:
analyze index index_name validate structure
然后查询 index_stats
select name, height, pct_used, del_lf_rows/lf_rows from index_stats;
DEL_LF_ROWS于LF_ROWS的比例 这是最基本的了
如果查询结果中:
Height > 4
PCT_USER < 50
del_lf_rows/lf_rows > 0.2
则说明索引需要重建。

可以通过程序来实现该功能
注意:analyze index 和查询index_stats 必须在同一个session中

create table MONITORINDEX
(
      INDEX_NAME  VARCHAR2(50),
      DEL_LF_ROWS NUMBER,
      LF_ROWS     NUMBER,
      RATE        NUMBER(4,2),
      MONITORDATE DATE default sysdate not null
)
create or replace procedure analyzeindex is
  v_sql varchar2(100);
begin
  for a in (select index_name from all_indexes where owner = USER) loop
    v_sql := ' analyze index ' || a.index_name || ' validate structure';
    execute immediate v_sql;
    insert into monitorindex
      (index_name, del_lf_rows, lf_rows, rate)
      select name,
             del_lf_rows,
             lf_rows,
             round(del_lf_rows * 100 / (lf_rows + del_lf_rows), 2)
        from index_stats;
  end loop;
end analyzeindex;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值