Latch free等待事件的三个参数:p1-latch的地址;p2-latch编号;p3-请求次数。从oracle10g起,latch free不再包含所有的latch等待,有些latch等待可能表现为单独的等待事件,这个后面有提到一些这样的等待事件,一般情况下我们还是统称为latch free等待事件。在处理latch free等待事件时,需要注意以下几点:
? Latch只是用来保护sga中的内存结构。对数据库中的对象的保护,使用的lock而不是latch。Oracle sga中有许多latch,用来保护sga中各种内存结构不会因为并发访问而损坏。
? 等待latch的是oracle会话。不同的latch类型会导致会话采取不同的策略。
? 在oracle9i(包括9i)之前,latch free等待事件包括了所有的latch等待,但从oracle10g起,latch被分成不同的种类,并且某些latch表现为独立的等待事件。
什么是latch
Latch是一种锁机制。你应该已经熟悉latch的概念和用法,虽然可能你自己并没有意识到。在日常的工作和交流中,latch都经常出现,比如你锁门时,需要获得一个latch;或者你坐到车里,系上安全带,你就把自己放在一个latch的保护中了。
在oracle中,latch是一种轻量级的锁。一般来说,latch由三种内存元素组成:pid(进程id),内存地址和内存长度。Latch保证对共享数据结构的排它性访问,以此来保证内存结构的完整性不受到损坏。在多个会话同时修改或者检视(inspect)sga中同一个内存结构时,必须串行化访问以保证sga中数据结构的完整性。
。。。。。。
更多内容请看附件。
原文:oracle wait interface—a practical guide to performance diagnostics & tuning
Richmond shee
Kirtikumar deshpande
K gopalakrishnan
Mcgraw-hill/osborne
2100 powell street, 10th floor
Emeryville, california 94608
U.s.a.
Chapter 6: interpreting locks-related wait events - latch free
本文只是对原文的一个大概翻译,边看边写的,有理解不对的地方,欢迎大家指出,技术在交流中进步,呵呵
-------------------------------------------------------------------------------
latch是一种低级排队机制,用于保护SGA中共享内存结构。latch就像是一种快速地被获取和释放的内存锁。用于防止共享内存结构被多个用户同时访问。如果latch不可用,就会记录latch释放失败(latch free miss )。有两种与闩有关的类型:
■ 立刻。
■ 可以等待。
假如一个进程试图在立刻模式下获得闩,而该闩已经被另外一个进程所持有,如果该闩不能立可用的话,那么该进程就不会为获得该闩而等待。它将继续执行另一个操作。
大多数latch问题都与以下操作相关:
没有很好的是用绑定变量(library cache latch)、重作生成问题(redo allocation latch)、缓冲存储竞争问题(cache buffers LRU chain),以及buffer cache中的存在"热点"块(cache buffers chain)。
通常我们说,如果想设计一个失败的系统,不考虑绑定变量,这一个条件就够了,对于异构性强的系统,不使用绑定变量的后果是极其严重的。
另外也有一些latch等待与bug有关,应当关注Metalink相关bug的公布及补丁的发布。当latch miss ratios大于0.5%时,就应当研究这一问题。
Oracle的latch机制是竞争,其处理类似于网络里的CSMA/CD,所有用户进程争夺latch, 对于愿意等待类型(willing-to-wait)的latch,如果一个进程在第一次尝试中没有获得latch,那么它会等待并且再尝试一次,如果经过_spin_count次争夺不能获得latch, 然后该进程转入睡眠状态,持续一段指定长度的时间,然后再次醒来,按顺序重复以前的步骤.在8i/9i中默认值是_spin_count=2000。
如果SQL语句不能调整,在8.1.6版本以上,Oracle提供了一个新的初始化参数: CURSOR_SHARING可以通过设置CURSOR_SHARING = force 在服务器端强制绑定变量。设置该参数可能会带来一定的副作用,对于Java的程序,有相关的bug,具体应用应该关注Metalink的bug公告。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26188260/viewspace-708624/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26188260/viewspace-708624/