`

Oracle local write wait 和 enq:RO - fast object reuse 等待事件 说明

 
阅读更多

在AWR 看到local write waits和 enq: RO - fast object reuse 的 等待事件。

一.Local write waits 等待说明

网上对local write waits 的说明:

Note 1

Typically DBWRhas to free up some buffers when you want to read something from the disk.During this process there are chances that you will be waiting for your localbuffer (i.e blocks dirtied/invalidated by your session) to be written to disk.During this timethewaits are shown as local write waits.

Note 2

Basically'localwrite' wait happens (as the name indicates) when the session is waiting for itslocal (means writes pending because of its own operation)writeoperation. This could happen typically if the underlying disc has some seriousproblems (one of the member disk crash in RAID-05 - for example, or acontroller failure). That is why I might have said ' you never see this wait inthe normal databases!'.You may see thisduring (rarely) Truncating a large table while most of the buffers of thattable in cache. During TRUNCATEs the session has to a local checkpoint andduring this process, the session may wait for 'local write' wait.

基本上'local write' wait 表示会话在等待自己的写操作。在磁盘发生严重问题时会发生(例如RAID 5的一个磁盘崩溃,或者磁盘控制器错误),这在正常的系统中极少发生,在TRUNCATE 一个大表而这个表在缓存中的时候,会话必需进行一个localcheckpoint,这个时候会话会等待localsession wait.

在MOS 的文档:

Truncates Taking Too Long... [ID 334822.1]

提到了这个等待事件。

Cause

Processes thatinvolve temporary tables being truncated and repopulated in multiple,concurrent batch streams may present this situation.

The underlyingproblem is we have to write the object's dirty buffers to disk prior toactually truncating or dropping the object. This ensures instancerecoverability and avoids a stuck recovery. It seems at first glance perfectlyreasonable to simply truncate a temporary table, then repopulate for anotherusage. And then to do the temporary poplulate/truncate operationsin concurrent batches to increase throughput.

However, inreality the concurrent truncates get bogged down as dbwr gets busy flushing thosedirty block buffers from the buffer cache. You will see huge CI enqueue waits.The multiple truncate operations in concurrent streams absolutely killthroughput.This is specially critical with large buffers.

There was also adisscussion in Bug: 4147840 (non-publish) where a peoplesoft process wascausing this behavior because of the above explanation and they seemed to fixit by changing some peoplesoft code to implement delete rather than truncate onsamll temporary tables.

Solution

In 9.2.0.5 andhigher, it may also help to make sure a "temp" tablethat isfrequently truncated have storage defined so that it occupiesone extent.But this workaround is only available as long as the extentis no morethan 50% the size of the buffer cache. In non-RAC environmentsthe tablestill has to be smaller than 50% of the buffer cache, but itallows thetable to have up to 5 extents before falling back to the oldalgorithm.

二.enq: RO - fast object reuse 等待事件

该等待事件多与bug 相关

2.1 Bug 1Bug 7385253

Bug 7385253 - Slow Truncate / DBWR useshigh CPU / CKPT blocks on RO enqueue [ID 7385253.8]

Affects:

Product (Component)

Oracle Server (Rdbms)

Range of versionsbelievedto be affected

Versions >= 10 but BELOW 11.2

Versionsconfirmedas being affected

Platforms affected

Generic (all / most platforms affected)

Fixed:

This issue is fixed in

该Bug的3个表现:

(1)Hang(Involving Shared Resource)

(2)PerformanceAffected (General)

(3)Waits for "enq:RO - fast object reuse"

DBWR may use alot of CPU and seem to spin in or around kcbo_write_qdue to large number offree buffers on the object reuse queue or checkpoint queue.

In some casesthe CKPT holds the RO enqueue for very long blocking other operations with waitevent "enq: RO - fast objectreuse".

Operations so farreported being affected are :

- Apply Processes in StandBy databases

- Gather stats

- Truncates

- drop/shrink/alter tablespace

Note: This fix was previously incorrectlylisted as not affecting 11g.

The bug itself is present in 11g but it is unlikely to show anysignificant symptom due to other 11g changes meaning that free buffers are nolonger kept on the object queue.

对与该Bug 的解决方法:

setting _db_fast_obj_truncate=FALSE <--did not fix the issue
enabling asyn i/o <-- customer refused to implement to avoid corruptionsrisk
applying 7287289 <-- did not fix the issue

2.2 文档二

'enq: RO - fastobject reuse' contention when gathering schema/table statistics in parallel [ID762085.1]

Symptoms

(1)Database has been recently upgradedfrom 10.2.0.1 to 10.2.0.4.
(2)There is'enq: RO - fastobject reuse' contention when gathering schema/table statistics in parallelusing DBMS_STATS package (with DEGREE>1).

其也是因为Bug 7385253导致这个问题。

解决方法:

1) Flushing the buffer cache.
OR
2) Setting "_db_fast_obj_truncate" =FALSE. This reverts back to the9i way of invalidating buffers in the buffer cache.

Kindly note thatboth workarounds could have an impact on the database performance. Instead, itis recommended applying the corresponding patch.

--2种解决方法对db 性能都有很大影响,建议应用合适的patch

2.3 文档三

Bug8544896 - Waits for "enq: RO - fast object reuse" with high DBWR CPU[ID 8544896.8]

Affects:

Product (Component)

Oracle Server (Rdbms)

Range of versionsbelievedto be affected

Versions >= 10.2.0.4 but BELOW 10.2.0.5

Versionsconfirmedas being affected

Platforms affected

Generic (all / most platforms affected)


It is believed to be aregressionindefaultbehaviour thus:
Regression introduced in 10.2.0.4

Fixed:

This issue is fixed in

This problem is introduced in 10.2.0.4.

Sessions can wait on "enq: RO - fastobject reuse" while DBWR consumes lots of CPU when performing truncatetype operations.

Workaround:

(1)Flush the buffer cache beforetruncating

OR

(2) set _db_fast_obj_truncate = FALSE.

我这里出现这2个等待事件都与Truncate 操作有关。

-------------------------------------------------------------------------------------------------------

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

Skype: tianlesoftware

QQ: tianlesoftware@gmail.com

Email: tianlesoftware@gmail.com

Blog: http://www.tianlesoftware.com

Weibo: http://weibo.com/tianlesoftware

Twitter: http://twitter.com/tianlesoftware

Facebook: http://www.facebook.com/tianlesoftware

Linkedin: http://cn.linkedin.com/in/tianlesoftware

-------加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请----

DBA1 群:62697716(满); DBA2 群:62697977(满)DBA3 群:62697850(满)

DBA 超级群:63306533(满); DBA4 群:83829929 DBA5群: 142216823

DBA6 群:158654907 DBA7 群:172855474 DBA总群:104207940

分享到:
评论

相关推荐

    enq:TX index contention.txt

    并在数据块上产生一个TX锁,此时另外一个会话也需要向该数据块中插入新的索引条目,于是该事务不得不等待索引分裂完成。这时就会表现为enq: TX - index contention。本例中索引块分裂属于5-5 分裂,此分裂可以通过...

    BLOG_【AWR分析】Oracle_lhr_队列等待之enq IV - contention案例.pdf

    BLOG_【AWR分析】Oracle_lhr_队列等待之enq IV - contention案例.pdfBLOG_【AWR分析】Oracle_lhr_队列等待之enq IV - contention案例.pdf

    BLOG_Oracle_lhr_ 【等待事件】等待事件系列(5.1)--Enqueue(队列等待) .pdf

    BLOG_Oracle_lhr_ 【等待事件】等待事件系列(5.1)--Enqueue(队列等待) .pdfBLOG_Oracle_lhr_ 【等待事件】等待事件系列(5.1)--Enqueue(队列等待) .pdf

    enq PS - contention.pdf

    enq PS - contention.pdf enq PS - contention.pdfenq PS - contention.pdf

    BLOG_【故障处理】Oracle_lhr_队列等待之TX - allocate ITL entry案例.pdf

    BLOG_【故障处理】Oracle_lhr_队列等待之TX - allocate ITL entry案例.pdfBLOG_【故障处理】Oracle_lhr_队列等待之TX - allocate ITL entry案例.pdf

    【故障处理】队列等待之TX 等待事件处理.docx

    Buffer busy waits异常等待事件分析与处理。 Buffer latch异常等待事件分析与处理。 Db file parallel read异常等待事件分析与处理。 Db file sequential read异常等待事件分析与处理。 Db file scattered read异常...

    undo引起的告警.txt

    当系统activity增加或者降低的时候,oracle SMON进程会自动ONLINE或者OFFLINE rollback segments。这样导致某些与undo segments相关的latch或者enqueue被...导致系统很多活跃session都开始等待enq: US - contention。

    序列等待事件总结

    BLOG_Oracle_lhr_【等待事件】序列等待事件总结(enq SQ - contention、row cache lock、DFS lock handle和enq SV - contention).pdfBLOG_Oracle_lhr_【等待事件】序列等待事件总结(enq SQ - contention、row ...

    SECSEmulatorv.zip_BAD_HSMS-SECS_SECS_SECS-II_自动化测试

    ITRI CIM Emulator能够读取SML档案,主要功能是用来测试半导体设备的通讯功能,它支持SECS-I/SECS-II/HSMS-SS通讯协议...Send Non-ENQ Bad Length Byte Bad Checksum T1 Timeout T2 Timeout for Length Byte T4 Timeout

    两因素身份验证客户端-Node.js开发

    安装:npm install -g tfa获得帮助bash-3.2 $ tfa用法:tfa [选项] [命令]命令:enroll-qrcode | enq [选项] 使用qrcode文件进行注册enroll | en [选项] enroll生成| gen [options] [label]生成list | l list delete...

    VMWare7.14汉化补丁

    VU59U-D0E0L-48ENQ-G6WGG-PQUZF 汉化方法: 1.安装原始版本。 2.解压完美汉化包,把汉化文件直接复制到虚拟机文件夹中,替 换原文件即可。 3.替换时,个别文件可能提示无法替换,请在任务管理器中先 结束相应...

    ASCII码表完整版, 从48-0,65-A,97-a,等等日常通用对照表

    ASCII (American Standard Code for Information Interchange) ASCII码大致由以下两部分组成: ...ENQ ACK BEL BS HT LF VT FF CR So SI DLE DCI DC2 DC3 DC4 NAK SYN TB CAN EM SUB ESC FS GS RS Us

    tuxmon:Oracle Tuxedo 的一个简单的类似 top 的监控工具

    TuxMon - 一个用于 Oracle Tuxedo IPC 队列和服务器的简单的类似 top 的监控工具 信息领域 逻辑和物理机器名称。 注意:以下数字包括资源管理器及其队列。 IPC 队列中的消息数 包含消息的 IPC 队列数 已完成某些...

    xcyx.smart

    PC侧: ENQ 站号 PLC号 BR 延时 首地址 数量 和效验 ACK 站号 PLC号 PLC侧: STX 站号 PLC号 数据 EXT 和效验 9 10 11 12 13 14  [注] 上述中:1、"PLC号"系统默认为"FF";2、"首地址 "应以十进制表示,如首地址...

    测试:Avelacnum enq testayin REPO

    ИмяпользователяПервое,чтовследуетсделатьпослеустановкиGit —указатьвашеимяиадресэлект。 Этоважно,потомуч...

    linux作业调度C程序

    linux实验 linux 作业调度程序 C语言 源码 可执行文件 enq deq stat

    Job-Scheduling:OS实验2, 作业调度

    Job-Scheduling需求说明基本要求和提高要求基本要求:学习源代码,并完成十个调试任务。提高要求:实现多级反馈轮转调度算法多级——多个队列。反馈——优先级会根据等待时间变化轮转——同优先级的作业轮流进行具体...

    超详细的字符编码教程

    5 – ENQ – ENQuiry 请求 2.1.2.1.2.6. 6 – ACK – ACKnowledgment 回应/响应 2.1.2.1.2.7. 7 – BEL – [audible] BELl 2.1.2.1.2.8. 8 – BS – BackSpace 退格键 2.1.2.1.2.9. 9 – HT – Horizontal Tab 水平...

    priorityqueuejs:Node.js的简单优先级队列数据结构

    priorityqueue.js Node.js的... enq ( { cash : 250 , name : 'Valentina' } ) ;queue . enq ( { cash : 300 , name : 'Jano' } ) ;queue . enq ( { cash : 150 , name : 'Fran' } ) ;queue . size ( ) ; // 3queue . p

    Python实现队列的方法

    def enQ(): queue.append(raw_input('Enter new string: ').strip()) #调用list的列表的pop()函数.pop(0)为列表的第一个元素 def deQ(): if len(queue) == 0: print 'Cannot pop from an empty queue!' else: ...

Global site tag (gtag.js) - Google Analytics