Metlink:Performance issues with enq: US - contention
Applies to:
Oracle Server - Enterprise Edition -
Version 9.2.0.1 and later
Information in this document applies to any platform.
Assist in correcting performance issues
related to "enq: US Contention" on undo segments.
You have many offline undo segments and the workload starts to online many undo
segments over a short period of time. This can lead to high 'latch: row cache
objects' contention may be seen on dc_rollback_segments together with high
'enq: US - contention' waits when using system managed undo with an auto tuned
undo retention period.
Sessions attempting to online undo segments should show
ktusmous_online_undoseg() in their call stack.
Another aspect of the problem can be due to long running queries which can
raise tuned_undoretention to very high values and exhausts the undo tablespace
resulting in ORA-1628.
A real world case:
A query is being executed and some rows are fetched from the cursor and then
the user stops working on that query (e.g. does not press the "next"
button on the application screen) and works on something else (e.g. in a
different window). After some time the user continues working on the query ...
auto-tune starts tracking the query from this point and the maxquerylen is
quite large now, hence also the tuned_undoretention (that depends directly on
the maxquerylen).
NOTE: The Seibel application can allow for this problem to happen.
The wait event "enq: US Contention" is associated with contention on
the latch in the row cache (dc_rollback_seg). Enqueue US - Contention can
become a bottle-neck for performance if workload dictates that a lot of
offlined undo segments must be onlined over a short period of time. The latch
on the row cache can be unable to keep up with the workload.
This can happen for a number of reasons and some scenarios are legitimate
workload demands.
Solution:
Ensure that peaks in onlined undo segments do not happen (see workaround #2).
That is not always feasible.
Workarounds:
1. Bounce the instance.
2. Setting _rollback_segment_count to a high number to keep undo segments
online.
alter system set "_rollback_segment_count"=;
NOTE: In databases with high query
activity, particularly parallel query and a high setting for
"_rollback_segment_count", you can expect to see wait contention on
the row cache for dc_rollback_segs. It is highly recommended in these
environments where setting "_rollback_segment_count" to a high value
(10s of thousands and higher) apply the patch for Bug 14211971.
This will increase the hash buckets on the dc_rollback_segs row cache to help
alleviate latch contention.
3. Set _undo_autotune to false
alter system set "_undo_autotune" = false;
NOTE: Simply using _smu_debug_mode=33554432 may not be enough to stop the
problem, but valid fix for bug 5387030.
4. A fix to bug 7291739 is to set a new hidden parameter,
_highthreshold_undoretention to set a high threshold for undo retention
completely distinct from maxquerylen.
alter system set "_highthreshold_undoretention"=;
If problems persist, please file a Service Request with Oracle Support.
@ Diagnosis
@
@ Should the workarounds and/or configuration changes not help to
alleviate the problems,
@ development would need the following diagnostics data:
@
@ a. Provide alert.log which shows the last instance startup parameters
through the time of the
@ latest isssues.
@
@ b. AWR and/or ASH report of 30 or 60 minutes interval.
@
@ b. Following query output:
@
@ alter session set nls_date_format='mm/dd/yy hh24:mi:ss';
@ select begin_time, MAXQUERYID, MAXQUERYLEN from v$undostat;
@
@ c. While the error is ongoing:
@
@ On single instance:
@
@ sqlplus / as sysdba
@ oradebug setmypid
@ oradebug unlimit
@ oradebug hanganalyze 3
@ oradebug dump systemstate 266
@
@ wait for 5 seconds
@
@ oradebug dump systemstate 266
@
@ wait for 2 minutes
@
@ sqlplus / as sysdba
@ oradebug setmypid
@ oradebug unlimit
@ oradebug hanganalyze 3
@ oradebug dump systemstate 266
@
@ wait for 5 seconds
@
@ oradebug dump systemstate 266
@
@ On RAC get tracing on all nodes
@
@ sqlplus / as sysdba
@ oradebug setmypid
@ oradebug unlimit
@ oradebug -g all hanganalyze 3
@ oradebug -g all dump systemstate 267
@
@ wait for 5 seconds
@
@ oradebug -g all dump systemstate 267
@
@ wait for 2 minutes
@
@ sqlplus / as sysdba
@ oradebug setmypid
@ oradebug unlimit
@ oradebug -g all hanganalyze 3
@ oradebug -g all dump systemstate 267
@
@ wait for 5 seconds
@
@ oradebug -g all dump systemstate 267
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13750068/viewspace-740657/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- enq: US - contentionENQ
- 關於enq: US – contentionENQ
- 效能問題,AWR High Event enq: US - contentionENQ
- 故障處理】佇列等待之enq: US - contention案例佇列ENQ
- 【故障處理】佇列等待之enq: US - contention案例佇列ENQ
- enq: US - contention問題 undo 使用率100%ENQ
- enq: HW - contentionENQ
- enq: TM - contentionENQ
- enq:TM contentionENQ
- enq: DX - contentionENQ
- enq: TS - contentionENQ
- zt_Oracle enq: TX contention 和 enq: TM contention 等待事件OracleENQ事件
- enq:TX - index contentionENQIndex
- enq: TX - index contentionENQIndex
- enq: TX - row lock contentionENQ
- enq: WF - contention等待事件ENQ事件
- enq: CF - contention 等待事件ENQ事件
- enq: TX - index contention等待ENQIndex
- enq: TS - contention 等待事件ENQ事件
- Oracle -- Common Performance Tuning IssuesOracleORM
- 等待事件之enq: HW - contention事件ENQ
- enq: SQ - contention" waits in RACENQAI
- 【故障解決】enq: PS - contentionENQ
- enq:TM-contention事件等待ENQ事件
- 消除 enq: DX - contention 等待事件ENQ事件
- Oracle等待事件之enq: TM – contentionOracle事件ENQ
- 等待事件enq: TX - row lock contention事件ENQ
- oracle等待事件之enq: CF – contentionOracle事件ENQ
- 【等待事件】-enq: TX - row lock contention事件ENQ
- Top 5 Database and/or Instance Performance Issues in RAC EnvironmentDatabaseORM
- enq: TX - index contention基礎理論ENQIndex
- 故障排除 | enq:TX - index contention等待事件ENQIndex事件
- Troubleshooting 'enq: TX - index contention' WaitsENQIndexAI
- 奇異的enq: TX - row lock contentionENQ
- 等待事件enq TX row lock contention分析事件ENQ
- 如何診斷等待事件 enq: HW - contention事件ENQ
- enq: HW - contention 問題的處理ENQ
- 【MW】Drop Materialized View Hangs with 'Enq: JI - Contention'ZedViewENQ