您当前的位置: 首页 >  ui

【MOS】Index Rebuild Is Hanging Or Taking Too Long (文档 ID 272762.1)

发布时间:2016-11-13 20:41:21 ,浏览量:0

APPLIES TO: Oracle Database - Enterprise Edition - Version 8.1.7.4 to 9.2.0.4 [Release 8.1.7 to 9.2] Information in this document applies to any platform. SYMPTOMS

 .

CHANGES

 .

CAUSE

 .

SOLUTION

(AuthWiz 1.2) Created from <>

APPLIES TO

Oracle Server - Enterprise Edition - Version: 9.2.0.4 This problem can occur on any platform.

SYMPTOMS

Problem: ======== - Online Index rebuild takes a long time. - ONLINE INDEX REBUILD SCANS THE BASE TABLE AND NOT THE INDEX Symptoms: ========= Performance issues while rebuilding very large indexes. - The offline rebuilds of their index is relatively quick -finishes in 15 minutes. - Issuing index rebuild ONLINE statement => finishes in about an hour. - This behavior of ONLINE index rebuilds makes it a non-option for large tables  as it just takes too long to scan the table to rebuild the index. The  offline may not be feasible due to due to the 24/7 nature of the database. - This may be a loss of functionality for such situations. - If we attempt to simultaneously ONLINE rebuild the same indexes we may encounter hanging behavior indefinitely (or more than 6 hours).  DIAGNOSTIC ANALYSIS: -------------------- We can trace the sessions rebuilding the indexes with 10046 level 12. Comparing the IO reads for the index-rebuild and the index-rebuild-online  reveals the following: -ONLINE index rebuilds It scans the base table and it doesn't scan the blocks of the index. -OFFLINE index rebuilds It scans the index for the build operation. - This behaviour is across all versions. TEST CASE: ---------- --connect as scott -- sqlplus scott/tiger -- --create some dummy table from the dba_objects view -- create table objects as select * from dba_objects; -- --create an index on the table create index object_idx on objects(object_id,object_name); -- --check out the file_id and block_id for the table and index -- set linesize 150 set pagesize 4444 col segment_name format a40 select segment_name,file_id,block_id from dba_extents where owner = 'SCOTT'  and segment_name like 'OBJECT%'; -- --trace the ONLINE index rebuild first -- alter session set events '10046 trace name context forever, level 12'; alter index object_idx rebuild online; -- --exit here and pull up the trace file. You'll see the reads --for the cursor representing the cursor performing the rebuild that they --are scanning the file and blocks belonging to the --base table --called OBJECTS -- exit -- --Log back in and retry the same with the OFFLINE index rebuild -- sqlplus scott/tiger -- --get the new block_ids because the index has been rebuilt since we did this  --last time -- set linesize 150 set pagesize 4444 col segment_name format a40 select segment_name,file_id,block_id from dba_extents where owner = 'SCOTT'  and segment_name like 'OBJECT%'; -- --trace and rebuild the index -- alter session set events '10046 trace name context forever, level 12'; alter index object_idx rebuild; -- --exit out and check the trace file again. You'll see that we read the index  --blocks for the rebuild On analyzing the trace file generated, we will notice that there are lots of 'db file scattered read' wait events.

CAUSE

Cause/Explanation ============= When you rebuild index online, - it will do a full tablescan on the base table. - At the same time it will maintain a journal table for DML data, which has  changed during this index rebuilding operation.  So it should take longer time, specially if you do lots of DML on the same table, while rebuilding index online. On the other hand, while rebuilding the index without online option, Oracle will grab the index in X-mode and rebuild a new index segment by selecting the data from  the old index. So here we are - not allowing any DML on the table hence there is no journal table involved  - and it is doing an index scan Hence it will be pretty fast.

FIX

Solution/Conclusion: =========== - The ONLINE index rebuild reads the base table, and this is by design. - Rebuilding index ONLINE is pretty slow. - Rebuilding index offline is very fast, but it prevents any DML on the base table.

REFERENCES

BUG:3221809 - Online Index Rebuild Scans The Base Table And Not The Index

REFERENCES BUG:3221809  - ONLINE INDEX REBUILD SCANS THE BASE TABLE AND NOT THE INDEX

..........................................................................................................................................................................................................................................................................................................

● 本文来自于MOS转载文章,(文档 ID  272762.1)

● 本文在itpub(http://blog.itpub.net/26736162)、博客园(http://www.cnblogs.com/lhrbest)和个人微信公众号(xiaomaimiaolhr)上有同步更新

● QQ群:230161599  微信群:私聊

● 小麦苗分享的其它资料:http://blog.itpub.net/26736162/viewspace-1624453/

● 小麦苗云盘地址:http://blog.itpub.net/26736162/viewspace-1624453/

● QQ群: 230161599   微信群:私聊

● 联系我请加QQ好友(642808185),注明添加缘由

● 版权所有,欢迎分享本文,转载请保留出处

..........................................................................................................................................................................................................................................................................................................

手机长按下图识别二维码或微信客户端扫描下边的二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,免费学习最实用的数据库技术。

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

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108476博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0498s