Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

0

积分

0

好友

18

主题
1#
发表于 2013-5-2 17:35:09 | 查看: 3118| 回复: 3
刘大, 您好:
有几个问题请您指点一下。
关于index rebild 和rebuild on line 的区别在哪?什么原因导致了rebuild on line 在执行的过程中不会挡住DML 的操作?
对于rebuild online 在整个的执行过程中涉及到的锁有哪些?
2#
发表于 2013-5-2 20:12:15
先去 10046 trace 下这2个过程 再讨论该问题

回复 只看该作者 道具 举报

3#
发表于 2013-6-24 23:54:32
rebuild online 用的是temp 表空间。 10046事件太复杂。 刘大 能否出一个10046的简单查看和理解视频就好了。帮助会非常大。

回复 只看该作者 道具 举报

4#
发表于 2013-6-25 19:46:02
这个我在网上看到一个专门的文章说了。我可以在这里简单说一下:
一般情况下,在创建和rebuild索引时,都会对基表进行锁定,这时应为TM的S,这是无法执行DDL\DML,就会阻塞其它会话的DML。
如果指定了online,那么它会对基表生成一个记录快照,将基表的所有数据存入IOT表中,这时只有在生成记录快照时再会加一个TM的S,当完成快照的生成就会释放。在10G中这一步骤是会造成短暂的阻塞,据闻在11G中已经解决。生成快照后,就会从IOT中读取索引进行创建,并且IOT记录基表的变化,当索引按照快照记录完成创建后,就时就要进行一个合并的动作,该合并是为了将创建索引时发生变化的记录更新到索引,在开始这一步前会对基表再下一个TM的S锁防止更改。更新新完就释放了。
以上是ONLINE与非ONLINE的原理区别,实际应用就是ONLINE就是不会锁表,不会堵塞DML。不指定ONLINE就会堵塞DML,所以在不指定ONLINE时,请不要在业务繁忙时段执行。

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-29 15:32 , Processed in 0.045211 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569