开发部门反映wms系统反映缓慢
查看系统等待事件
select event,count(1) from gv$session_wait
group by event
order by count(1) desc;
查询资料发现virtual circuit status idle event
interface. The common idle events are as follows:
Idle Events | |
client message | PX Deq: Execute Reply |
dispatcher timer | PX Deq: Execution Msg |
gcs for action | PX Deq: Signal ACK |
gcs remote message | PX Deq: Table Q Normal |
ges remote message | PX Deque wait |
i/o slave wait | PX Idle Wait |
jobq slave wait | queue messages |
lock manager wait for remote message | rdbms ipc message |
null event | slave wait |
parallel query dequeue | smon timer |
pipe get | SQL*Net message from client |
PL/SQL lock timer | SQL*Net message to client |
pmon timer | SQL*Net more data from client |
PX Deq Credit: need buffer | virtual circuit status |
PX Deq Credit: send blkd | wakeup time manager |
问题出现前提条件:
1. 使用 oracle 11gR2
2. 是客户端PL/SQL在连接数据库的时候使用shared server
3. plsql在默认连接的时候是创建多个session的:Session Mode 选择 Multi session或者Dual session
此时查询 v$session 视图可以看到,session的等待事件就是 virtual circuit wait,注销plsql即可看到等待事件取消
只有条件1,2和条件3同时达到才会产生这个等待事件,如果使用dedicated链接或者plsql配置上选择Single session 都不会产生这个等待事件。
这个应该算是共享链接模式的特有异常,当然使用共享链接模式的比较少,大家见到该异常的概率也比较低,仅供参考
参考文档
【参考一】
This is a performance monitoring enhancement to split the 'virtual circuit status' wait event into two new
wait events:
"shared server idle wait" - for when the shared server is
idle waiting for something to do
"virtual circuit wait" - for when the shared server is
blocked waiting on a specific
circuit / message
The wait "virtual circuit status" no longer exist with this fix.
Before the bug fix the 'virtual circuit status' event was classified as an
idle event but was used for both idle and non-idle waits. Since the idle time
dominated the total time for the event, it obscured any true issues with the
other waits under the event.
With this bug fix included in 11.1.0.7 and 11.2 The 'virtual circuit status' wait
event was removed and replaced by two new wait events: 'shared server idle wait' and
'virtual circuit wait'. The wait on the common queue uses 'shared server idle wait' and
all the otherwaits use 'virtual circuit wait'
原文链接:https://support.oracle.com/CSP/main/article?cmd=show&type=COMMUNITIES&doctype=COMTHREAD&id=85058
【参考二】Bug 6653834 - Split "virtual circuit status" into idle / non-idle waits [ID 6653834.8]
This note gives a brief overview of bug 6653834.
The content was last updated on: 11-JAN-2010
Click here for details of each of the sections below.
Affects:
Product (Component) | Oracle Server (Rdbms) |
Range of versions believed to be affected | Versions < 11.2 |
Versions confirmed as being affected |
|
Platforms affected | Generic (all / most platforms affected) |
The fix for this bug introduces a notable change in behaviour thus:
Notable change of behaviour introduced in 11.1.0.7
Fixed:
This issue is fixed in |
|