Oracle 等待事件 buffer read retry 官方解释,作用,如何使用及优化方法

本站中文解释

Oracle 事件Buffer Read Retry一般为因为并发性能问题,当发生缓存读取失败而出现的重试操作。

当数据库检索特定块时,如果这块已经被另一个会话拥有的话,就会发生缓存失败的情况,就会出现该事件。

一次缓存会话,会话拥有特定的缓存的用户,当该会话没有释放缓存,另一个会话会话请求该缓存,导致缓存失败,操作系统或数据库将会retry,等待另一个会话释放缓存,也就发生了buffer read retry,也就是缓存读取重试。

Buffer read retry是由更低层次的操作系统和数据库回复而产生的,是主动等待发生缓存失败后回复重试操作。 由于在当前会话时间段内,并发用户高於特定block的持有限制,导致缓存失败,也就是buffer read retry。

一般Buffer read retry事件发生的原因在于:

1),数据库的某块缓存已经被另一个会话持有:

当数据库在检索某一特定块时,如果该块已经被另一个会话拥有了,会导致缓存失败,而触发Buffer read retry。

2),Buffer Cache 无法满足系统的动态增长:

当数据库中,缓存大小不足以满足系统的动态增长时,就会发生Buffer read retry的现象。当特定的块缓存已经满足无法再放下新的数据时,会触发Buffer read retry,等待其他会话释放了缓存,才可以放入新的数据。

3),共享池的不足

Buffer Cache的运行依赖于共享池的大小,如果有新的操作进入,而共享池又无法放入新的数据,也会触发Buffer read retry事件,等待共享池清理出可用空间后才能继续执行操作。

Buffer read retry一般不会有很大影响,尤其是在Concurency因素不是很强的情况下,一般情况下也不会出现这种情况。

解决Buffer read retry,一般是通过调整memlock参数,memlock参数控制着某一块被一些会话持有的次数。通过调整memlock参数,就可以改善这种buffer read retry的情况。

另外,也可以通过扩大buffer的大小,增加共享池的大小,来改善这种现象。

总之,Buffer read retry一般是由以上几个情况产生的,这种情况常常不会有很大的性能下降,但是,也可以通过调整memlock或者扩充buffer,来解决这类情况发生的情况。

官方英文解释

This event occurs only if the instance is mounted in shared mode (Oracle Real Application Cluster).

During the read of the buffer, the contents changed. This means that either:

  • The version number, dba, or the incarnation and sequence number stored in the block no longer match

  • The checksum on the block does not match the checksum in the block

The block will be reread (this may fail up to 3 times), then corruption is assumed and the corrupt block is dumped in the trace file.

Wait Time: The wait time is the elapsed time of the read

Parameter Description

file#

See “file#”

block#

See “block#”


数据运维技术 » Oracle 等待事件 buffer read retry 官方解释,作用,如何使用及优化方法