您的位置:首页 > 数据库 > Oracle

oracle等待事件buffer exterminate

2015-07-02 15:14 597 查看
 在刷oracle当前等待事件情况的时候,偶尔看到这个叫
buffer exterminate的等待事件,之前没有见到过,便查找下相关资料整理一下。在刷oracle当前等待事件情况的时候,偶尔看到这个叫

This wait event usually occurs when you have tried to dynamically resize a component of the SGA such as the buffer cache.
The "buffer exterminate" waits can only happen if part of the buffer cache is being dynamically shrunk and a session wants access to a data block that resides in a db cache buffer within a granule chosen
to be freed. After the buffer is freed (removed from buffer cache hash chain, LRU chain, etc.), one of the waiting sessions can then reload that block into one of the remaining db cache granules, and everyone else eventually finds the new buffer address for
the data block via hash lookup.
You can check the following views to see if any recent SGA Component resize operations have taken place :
V$SGA_DYNAMIC_COMPONENTS displays information about the dynamic SGA components. This view summarizes information based on all completed SGA resize operations since instance startup.
V$SGA_CURRENT_RESIZE_OPS displays information about SGA resize operations which are currently in progress. An operation can be a grow or a shrink of a dynamic SGA component.
V$SGA_DYNAMIC_FREE_MEMORY displays information about the amount of SGA memory available for future dynamic SGA resize operations.

该等待事件通常发生sga自动管理内存组件的时候。具体呢,是当buffer
cache中的部分空间正进行动态回缩时,有会话试图访问buffer
cache中被选择空间释放的granule中的data
block时,就会发生buffer
exterminate等待。当buffer被释放(比如从buffer
cache hash chain,LRU
chain上移除)后,等待的会话就能够重载该block到剩余的一个db
cache granule中去,然后其他会话就可以通过hash查找找到新的该block的buffer
address。

通常当大量出现该等待事件的时候,可以考虑禁掉sga自动管理,或者给sga中各个内存组件设置一个最小值来减少各组件间的自动调整。

正常情况下sga各个组件是保持稳定大小的,至于为何会出现大幅度的内存组件大小调整情况,就需要进一步分析处理了,硬解析呢,还是大量全表扫描呢。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: