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

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

0

积分

1

好友

7

主题
1#
发表于 2013-5-4 21:43:05 | 查看: 3416| 回复: 2
一直没有搞明白等待事件row cache lock和latch: shared pool等待事件的区别,好像两者都是硬解析造成的,但是两者什么区别还真不知道。还望大师解惑。
2#
发表于 2013-5-6 16:18:50
没有人回答吗?自己先顶一下

回复 只看该作者 道具 举报

3#
发表于 2013-5-6 17:54:47
row cache lock是enqueue,当需要更改数据字典信息时,首先要获取它;如果被别的事务占用,则进入SLEEP状态并等待enqueue可用。比如:某个存储过程正在执行,你尝试重编译,就会进入该等待事件,这个enqueue就是用来保护数据字典定义这个共享资源的。通过v$rowcache查看每种类型enqueue的命中率来发现哪里有问题(比如RAC环境中如果大多数sequeuce对象没设cache就会造成严重的性能问题)。

latch: shared pool是latch,shared pool分library cache和dictionary cache,而实际上造成该latch争用的一般问题是出在library cache上,library cache里存放的是已解析的SQL、PL/SQL的语句及执行计划;因此碰到这个问题应先查V$SHARED_POOL_ADVICE,看shared pool是否过小;如果大小适当的话,则要看是不是程序没有使用绑定变量了。

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-12-28 09:42 , Processed in 0.073656 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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