oracle数据库缓冲区忙等待的原因解析

oracle数据库缓冲区忙等待的原因解析

ID:9993888

大小:38.00 KB

页数:3页

时间:2018-05-20

oracle数据库缓冲区忙等待的原因解析_第1页
oracle数据库缓冲区忙等待的原因解析_第2页
oracle数据库缓冲区忙等待的原因解析_第3页
资源描述:

《oracle数据库缓冲区忙等待的原因解析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、众多Oracle有关问题中,其中最重要的一个是缓冲区忙等待(bufferbusywait)事件。缓冲区忙等待是I/O-boundOracle系统中最常见的现象,尤其是在OracleSTATSPACK报告的前五个忙等待的读(顺序/分散)系统中,如前5个定时事件:  %总和事件等待 时间(s)消逝时间 ------------------------------------------------------------- db文件顺序读2,5987,146 48.54 db文件分散读25,5193,246 22.04 库缓冲区载入死锁6731,3639.26 CPU时间 2,154 9347.

2、83 日志文件平行写 19,157 8375.68 减轻缓冲区忙等待的主要方式是减少系统中的I/O,这可以通过SQL使用更少的块读(blockreads,比如添加索引)的方式得以实现。即使对于一个比较大的db_cache_size,我们也可以减少缓冲区忙等待的时间。为了能够查看整个系统的等待事件,我们可以查阅v$system_event性能视图。这一性能视图提供了等待事件的名称,等待事件与时间的总和,以及每一事件的平均等待时间。可以通过v$waitstat视图来查询导致等待的缓冲区的类型。这一视图列出了每一缓冲区类型的等待,COUNT是类所有的等待总和,TIME是这一类所有等待的时间总和,如

3、下所示:  select*fromv$waitstat;  类 COUNT TIME -------------------------------------- datablock19611131870278 segmentheader 34535159082 undoheader233632 86239 undoblock 1886 1706 当一个session访问缓冲区的块时,就有可能产生缓冲忙等待。这一缓冲区忙等待的产生可能由以下的原因造成的:块可能被其它的session读到缓冲区,所以session必须等待块的读入结束。session可能有与等待的session查询不协调的缓冲

4、块。由于缓冲区忙等待是由不同特定的块之间的竞争而造成的,所以只能通过识别哪些块发生冲突和冲突产生的原因,你才有可能做出判断,相应的调整包括识别和消除块竞争的原因。v$session_wait性能视图,提供了识别等待产生原因的方法。v$session_wait视图的列代表的缓冲区忙等待事件如下:P1—与等待相关的数据文件的全部文件数量。P2—P1中的数据文件的块数量。P3—描述等待产生原因的代码。这里是一个这些值的Oracle数据词典查询:  select  p1"File#".  p2"Block#",  p3"ReasonCode" from  v$session_wait where  

5、event='bufferbusywaits'; 如果以上查询的结果显示一个块在忙等待,以下的查询将显示这一块的名称和类型:  select  owner,  segment_name,  segment_type from  dba_extents where  file_id=&P1 and  &P2betweenblock_idandblock_id+blocks-1; 一旦这一块被识别,v$segment_statistics性能视图促使块水平统计的实时监控。这一过程使得DBA识别与独立列表与索引有关的问题。我们也可以查询dba_data_files以确定卷入等待的文件的file_n

6、ame,方法是使用v$session_wait中的P1。从v$session_wait中查询P3(原因编码)的值可以知道session等待的原因。原因编码的范围从0到300,并可以解码。在一个SCUR或XCUR缓冲区产生且没有结束的改变。0块被读入缓冲区。100我们想要NEW(创建)一个块,但这一块当前被另一session读入。110我们想将当前块设为共享,但这一块被另一session读入,所以我们必须等待read()结束。120我们想获得当前的块,但其他人已经将这一块读入缓冲区,所以我们只能等待他人的读入结束。130块被另一session读入,而且没有找到其它协调的块,所以我们必须等待读的

7、结束。缓冲区死锁后这种情况也有可能产生。所以必须读入块的CR。200我们想新创建一个block,但其他人在使用,所以我们只好等待他人使用结束。210Session想读入SCUR或XCUR中的块,如果块交换或者session处于非连续的TX模式,所以等待可能需要很长的时间。220在缓冲区查询一个块的当前版本,但有人以不合法的模式使用这一块,所以我们只能等待。230以CR/CRX方式获得一个块,但块中的更改开始并

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。