ITPub博客

首页 > 数据库 > Oracle > index online rebuild 和drop /create 注意事项

index online rebuild 和drop /create 注意事项

原创 Oracle 作者:zhenglinsong 时间:2016-04-22 20:31:06 0 删除 编辑

1.业务高峰期 使用rebuild online 会导致索引一直创建不上去
如下测试
会话一 :
soe100@SPDBTEST>insert into t_1 values(1,'zls');

1 row created.

会话二 :
soe100@SPDBTEST>alter index ind_id1 rebuild online;

会话三:
此时会发现数据库出现TX锁等待通过如下查询获取等待信息

soe100@SPDBTEST>select a.sid,b.sid from v$lock a,v$lock b where a.id1=b.id1 and a.id2=b.id2 and a.lmode>0 and b.request>0;

       SID        SID
---------- ----------
      1897       6588

会话四:
soe100@SPDBTEST>insert into t_1 values(2,'zls');

1 row created.

可以发现会话一堵塞了会话二,那么我们提交会话一后
在会话三查询锁等待信息

soe100@SPDBTEST>select a.sid,b.sid from v$lock a,v$lock b where a.id1=b.id1 and a.id2=b.id2 and a.lmode>0 and b.request>0;

       SID        SID
---------- ----------
      2841       6588

可以发现 会话二倍 会话四堵塞。

小结:上面的小测试可以说明业务高峰期,不要使用alter index indexname rebuild online;

下面我们来看看drop /create的方式
当有事务出现的时候发现: drop直接报错
会话一:
soe100@SPDBTEST>insert into t_1 values(1,'zls');

1 row created.

会话二:
soe100@SPDBTEST>drop index ind_id1;
drop index ind_id1
           *
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
小结:创建索引,有明显报错信息提醒。

总结:业务高峰期,创建索引可以根据实际情况选择合理的方式 ,如果索引非常重要且表很大,那么请使用drop,create方式,但是会短暂影响到一些业务,
而使用online rebuild可以使得索引久久无法创建成功。


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

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2016-04-21

  • 博文量
    29
  • 访问量
    41415