Oracle,create index,如果是大表建立索引,切记加上online参数

来源:互联网 发布:长帝 cr32kea 知乎 编辑:程序博客网 时间:2024/06/07 02:34

转载:http://blog.csdn.net/robinjwong/article/details/42104831

这几天在做数据库的优化,有个2亿记录的表,发现需要添加一个联合索引,结果就采用普通的create index index_name

on tablename (entp_id,sell_date),结果悲剧了,把所有的DML语句都阻塞了,导致系统不能正常使用,还好是晚上10点,用户不是非常多,1个小时候,索引结束,阻塞解决;上网查了一下,如果加上 online参数后,就可以在线做索引,而不需要阻塞所有的DML语句,血的教训,拿出来与各位共勉,具体online与不加online区别如下:

1. DML操作对create index 的影响。 如果在create的时候,有其他的进程在对这个index 所对应的数据进行DML操作,create会受影响:


SQL> create table test (id number, name varchar2(20)); 
Table created.

--- 然后重新开一个session:
SQL> insert into test values (1,'lms');
1 row created.
<no commit>
SQL> create index t1 on test(id);
create index t1 on test(id)
*
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified
2. 加online这个参数,这个参数加上以后,除了create过程中index 保持online状态,Oracle还会在create index之前等待所有DML操作结束,然后得到DDL锁,开始create.
SQL> create index t1 on test(id) online;
<hold before commit>
<after commit>
SQL> commit;
Commit complete.
Index altered.
---- 如果不commit,上面的操作就会一直hold。
所以以后create索引和rebuild索引的时候最好加上online。


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 匡威经典篮球鞋 正版匡威多少钱 匡威白色开口笑 正品匡威帆布鞋多少钱 男生匡威开口笑搭配 匡威开口笑正品 为什么美国人不穿匡威穿回力 匡扶 匡时 匡衡 匡衡读音 匡衡的结局 匡衡后来怎么样了 以下哪个成语是关于匡衡的 匡迪保温杯 匡迪 匡迪水杯 匡迪玻璃杯 匡迪真空杯 匡迪焖烧壶 保温杯匡迪 匡迪杯子 匡迪保温杯价格 匡迪保温杯价格图片 匡迪水晶玻璃杯价格 匡迪不锈钢保温杯价格 匡迪保温杯怎么样 匡迪真空保温壶 匡迪保温杯怎样 匡迪真空杯价格 茶杯猫 百色芒果 日本b 爱奇屋保温杯 情侣杯 哈尔斯水杯 特百惠专卖店 55度杯 虎牌儿童保温杯 匡迪口杯 弹匣