设为首页 收藏本站
查看: 2143|回复: 0

[经验分享] Oracle性能视图v$session_wait_session

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-9-15 07:39:42 | 显示全部楼层 |阅读模式
  1、表结构
  SQL> desc v$session_event
  名称                                      是否为空? 类型
  ----------------------------------------- -------- ----------------------------
  SID                                                NUMBER
  EVENT                                              VARCHAR2(64)
  TOTAL_WAITS                                        NUMBER
  TOTAL_TIMEOUTS                                     NUMBER
  TIME_WAITED                                        NUMBER
  AVERAGE_WAIT                                       NUMBER
  MAX_WAIT                                           NUMBER
  TIME_WAITED_MICRO                                  NUMBER
  EVENT_ID                                           NUMBER
  WAIT_CLASS_ID                                      NUMBER
  WAIT_CLASS#                                        NUMBER
  WAIT_CLASS                                         VARCHAR2(64)
  SQL> desc v$session_wait
  名称                                      是否为空? 类型
  ----------------------------------------- -------- ----------------------------
  SID                                                NUMBER
  SEQ#                                               NUMBER
  EVENT                                              VARCHAR2(64)
  P1TEXT                                             VARCHAR2(64)
  P1                                                 NUMBER
  P1RAW                                              RAW(8)
  P2TEXT                                             VARCHAR2(64)
  P2                                                 NUMBER
  P2RAW                                              RAW(8)
  P3TEXT                                             VARCHAR2(64)
  P3                                                 NUMBER
  P3RAW                                              RAW(8)
  WAIT_CLASS_ID                                      NUMBER
  WAIT_CLASS#                                        NUMBER
  WAIT_CLASS                                         VARCHAR2(64)
  WAIT_TIME                                          NUMBER
  SECONDS_IN_WAIT                                    NUMBER
  STATE                                              VARCHAR2(19)
  查v$session_wait:
  SQL> select event,count(*),p1,p2,p3 from v$session_wait group by event,p1,p2,p3;
  EVENT COUNT(*) P1 P2 P3
  1 rdbms ipc message 6 300 0 0
  2 smon timer 1 300 0 0
  3 rdbms ipc message 1 500 0 0
  4 Streams AQ: waiting for time management or cleanup tasks 1 0 0 0

  5 Streams AQ: qmn slave>  6 rdbms ipc message 1 180000 0 0
  7 SQL*Net message from client 2 1413697536 1 0

  8 Streams AQ: qmn coordinator>  9 jobq slave wait 1 0 0 0
  10 rdbms ipc message 1 100 0 0
  11 SQL*Net message from client 1 1111838976 1 0
  12 pmon timer 1 300 0 0
  2、检查数据库的等待事件
  select event,count(*) from v$session_event group by event;
  * select event,count(*) from v$session_wait group by event;
  v$session_wait
  p1、 p2、p3告诉我们等待事件的具体含义,如果wait event是db file scattered read,p1=file_id/p2=block_id/p3=blocks,然后通过dba_extents即可确定出热点对象;如果是latch free的话,p2为闩锁号,它指向v$latch。
  P1RAW,P2RAW,P3RAW列对应P1,P2,P3的十六进制值;P1TEXT,P2TEXT,P3TEXT列对应P1,P2,P3列的解释。
  v$event_name 可以看到
  PARAMETER1 - address
  PARAMETER2 - number
  PARAMETER3 - tries
  关联到如下:
  PARAMETER1 - 等待的LATCH地址
  PARAMETER2 - latch号
  PARAMETER3 - 进程试图获取lanch的次数
  3、关于热点块dba_extents
  表结构:
  SQL> desc dba_extents;
  名称                                      是否为空? 类型
  ----------------------------------------- -------- ----------------------------
  OWNER                                              VARCHAR2(30)
  SEGMENT_NAME                                       VARCHAR2(81)
  PARTITION_NAME                                     VARCHAR2(30)
  SEGMENT_TYPE                                       VARCHAR2(18)
  TABLESPACE_NAME                                    VARCHAR2(30)
  EXTENT_ID                                          NUMBER
  FILE_ID                                            NUMBER
  BLOCK_ID                                           NUMBER
  BYTES                                              NUMBER
  BLOCKS                                             NUMBER

  >  如果wait event是db file scattered read,p1=file_id/p2=block_id/p3=blocks,然后通过dba_extents即可确定出热点对象
  先查
  select sid,event,p1 as file_id, p2 as "block_id/latch", p3 as blocks,l.name
  from v$session_wait sw,v$latch l
  where event not like '%SQL%' and event not like '%rdbms%'
  and event not like '%mon%' and sw.p2 = l.latch#(+);
  -----查热点块的SQL:
  --求等待事件及其热点对象
  select owner, segment_name, segment_type
  from dba_extents
  where file_id = &file_id
  and &block_id between block_id and block_id + &blocks - 1;
  查结果如下:
  OWNER SEGMENT_NAME SEGMENT_TYPE
  1 SYS    SYSTEM     ROLLBACK
  3、v$latch
  表结构
  SQL> desc v$latch
  名称                                      是否为空? 类型
  ----------------------------------------- -------- ----------------------------
  ADDR                                               RAW(8)
  LATCH#                                             NUMBER
  LEVEL#                                             NUMBER
  NAME                                               VARCHAR2(50)
  HASH                                               NUMBER
  GETS                                               NUMBER
  MISSES                                             NUMBER
  SLEEPS                                             NUMBER
  IMMEDIATE_GETS                                     NUMBER
  IMMEDIATE_MISSES                                   NUMBER
  WAITERS_WOKEN                                      NUMBER
  WAITS_HOLDING_LATCH                                NUMBER
  SPIN_GETS                                          NUMBER
  SLEEP1                                             NUMBER
  SLEEP2                                             NUMBER
  SLEEP3                                             NUMBER
  SLEEP4                                             NUMBER
  SLEEP5                                             NUMBER
  SLEEP6                                             NUMBER
  SLEEP7                                             NUMBER
  SLEEP8                                             NUMBER
  SLEEP9                                             NUMBER
  SLEEP10                                            NUMBER
  SLEEP11                                            NUMBER
  WAIT_TIME                                          NUMBER
  如果是latch free的话,p2为闩锁号,它指向v$latch。
  P1RAW,P2RAW,P3RAW列对应P1,P2,P3的十六进制值;P1TEXT,P2TEXT,P3TEXT列对应P1,P2,P3列的解释。
  --求等待事件及其对应的latch
  col event format a32
  col name format a32
  select sid,event,p1 as file_id, p2 as "block_id/latch", p3 as blocks,l.name
  from v$session_wait sw,v$latch l
  where event not like '%SQL%' and event not like '%rdbms%'
  and event not like '%mon%' and sw.p2 = l.latch#(+);
  查得的结果如下:
  SID EVENT            FILE_ID block_id/latch BLOCKS NAME

  1 154 Streams AQ: qmn coordinator>  2 153 jobq slave wait 0 0 0 event range base latch

  3 150 Streams AQ: qmn slave>  4 149 Streams AQ: waiting for time management or cleanup tasks 0 0 0 event range base latch
  --综合以上两条sql,同时显示latch及热点对象(速度较慢)
  select sw.sid,event,l.name,de.segment_name
  from v$session_wait sw,v$latch l,dba_extents de
  where event not like '%SQL%' and event not like '%rdbms%'
  and event not like '%mon%' and sw.p2 = l.latch#(+) and sw.p1 = de.file_id(+) and p2 between de.block_id and de.block_id + de.blocks - 1;
  --如果是非空闲等待事件,通过等待会话的sid可以求出该会话在执行的sql
  select sql_text
  from v$sqltext_with_newlines st,v$session se
  where st.address=se.sql_address and st.hash_value=se.sql_hash_value
  and se.sid =&wait_sid order by piece;

  其中 STATE 列 的描述如下(参考 Oracle Database Reference 10g>  ? 0 - WAITING (当前等待的 Session)
  ? -2 - WAITED UNKNOWN TIME (最后等待持续时间未知)
  ? -1 - WAITED SHORT TIME (最后的等待 0 - WAITED KNOWN TIME (WAIT_TIME = 最后等待持续时间)
  oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-583088-1-1.html 上篇帖子: Oracle八大性能视图之v$lock 下篇帖子: oracle的启动过程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表