oracle 等待,oracle 中的等待事件

cbef093dcc044b2793832001e2365e43.png0Other736cbef093dcc044b2793832001e2365e43.png1Application17cbef093dcc044b2793832001e2365e43.png2Configuration24cbef093dcc044b2793832001e2365e43.png3Administrative55cbef093dcc044b2793832001e2365e43.png4Concurrency33cbef093dcc044b2793832001e2365e43.png5Commit2cbef093dcc044b2793832001e2365e43.png6Idle95cbef093dcc044b2793832001e2365e43.png7Network35cbef093dcc044b2793832001e2365e43.png8UserI/O48cbef093dcc044b2793832001e2365e43.png9System I/O30cbef093dcc044b2793832001e2365e43.png10Scheduler8cbef093dcc044b2793832001e2365e43.png11Cluster50cbef093dcc044b2793832001e2365e43.png12Queueing9cbef093dcc044b2793832001e2365e43.png查看具体某个等待事件的p1,p2,p3参数

select name,parameter1,parameter2,parameter3 from v$event_name where wait_class#=8 and name='db file sequential read'

db file sequential read file# block# blocks

那如何统计一个当前会话中的每个session的累计等待事件,那看第三个视图

三 v$session_event v$system_event

select total_waits,sid,wait_class# from v$session_event where wait_class#=8 and total_waits>1000000 order by 1

cbef093dcc044b2793832001e2365e43.png10110617238cbef093dcc044b2793832001e2365e43.png106021212398cbef093dcc044b2793832001e2365e43.png79960045178cbef093dcc044b2793832001e2365e43.png1112108414368cbef093dcc044b2793832001e2365e43.png这里把sid取出来,再去v$session,v$sql里相应的sql即可.

select sql_id,sql_hash_value,prev_hash_value,machine,username,status from v$session where sid='1436'

select * from v$sqltext where hash_value='3889181855' order by 5

v$system_event记录了实例自启动以来的全部等待事件.这里用来看整个数据库的瓶紧.

select * from v$system_event where wait_class# not in (6,7) order by total_waits desc

四 v$segment_statistics

例如我们发现一个表有很大的User I/O等待事件,那么我们就要分析这个表,oracle提供了v$segment_statistics收集对象的统计信息:

select * from v$segment_statistics where object_name='PUB_HX_WORK_RELA'

--查询读较大的表

select * from v$segment_statistics where statistic_name='physical reads direct' and value>1057155967

oracle 11g收信的统计信息有18类:

select * from v$segstat_name

cbef093dcc044b2793832001e2365e43.png0logical reads    YES

cbef093dcc044b2793832001e2365e43.png1buffer busy waits    NO

cbef093dcc044b2793832001e2365e43.png2gc buffer busy    NO

cbef093dcc044b2793832001e2365e43.png3db block changes    YES

cbef093dcc044b2793832001e2365e43.png4physical reads    NO

cbef093dcc044b2793832001e2365e43.png5physical writes    NO

cbef093dcc044b2793832001e2365e43.png6physicalreadrequests    NO

cbef093dcc044b2793832001e2365e43.png7physical write requests    NO

cbef093dcc044b2793832001e2365e43.png8physical reads direct    NO

cbef093dcc044b2793832001e2365e43.png9physical writes direct    NO

cbef093dcc044b2793832001e2365e43.png11optimized physical reads    NO

cbef093dcc044b2793832001e2365e43.png12gc cr blocks received    NO

cbef093dcc044b2793832001e2365e43.png13gccurrentblocks received    NO

cbef093dcc044b2793832001e2365e43.png14ITL waits    NO

cbef093dcc044b2793832001e2365e43.png15row lock waits    NO

cbef093dcc044b2793832001e2365e43.png17spaceused    NO

cbef093dcc044b2793832001e2365e43.png18spaceallocated    NO

cbef093dcc044b2793832001e2365e43.png20segment scans    NO

cbef093dcc044b2793832001e2365e43.png

这里顺便说一个比较有趣的视图

select * from v$osstat

五 看下oracle 的读命中率

select 1-

(select value from v$sysstat where name='physical reads')/

((select value from v$sysstat where  name='db block gets')+(select value from v$sysstat where name='consistent gets'))

from dual

六 查询过往时间等待事件

select event,p1,p1text,p2,p2text,p3,p3text,wait_time_micro from v$session_wait_history a,v$event_name b where a.event#=b.event#

and b.wait_class# not in (6,7) order by wait_time_micro desc

七 v$latch,x$bh

select b.addr,b.ts#,b.file#,a.gets,a.misses,a.sleeps,b.dbarfil,b.dbablk from x$bh b,v$latch_children a where b.hladdr=a.addr and a.name='cache buffers chains' and a.gets>4000000;

取出dbablk,然后根据dba_extents 算出相应段信息

select c.owner,c.segment_name,c.bytes,c.blocks from dba_extents c where block_id<=535308 and block_id+blocks>535308;

--这里只对cache buffers chains 有效

对事件cache buffers lru chain.

获取cache buffers lru chain的情况如下:

需要装载块到内存的进程,需要查询lru获取空闲区时

DBWR进程在将lruw上的脏块写入文件后,需要将相应缓冲区放入lru时,包括如下情况:

需要装载块到内存的进程,在查询lru列时,查询超过特定块数还没有获取时,向DBWR请求写dirty block

parallel query时,或truncate,drop,tablespace backup时,向DBWR请求写相关对象的dirty block

检查点导致的脏块写入,包括:为保障FAST_START_MTTR_TARGET/LOG_CHECKPOINT_TIMEOUT周期性执行的检查点,日志切换,管理员检查点命令

posted on 2012-03-29 09:51 snowhill 阅读(243) 评论(0)  编辑 收藏 引用 所属分类: 数据库-oracle

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值