ORACLE数据库中查看:【性能相关的视图】

v$system_event

v$system_wait_class

v$session_event

v$session_wait_class

v$session_wait

v$session

v$sysmetric

v$waitclassmetric

v$active_session_history

timed_statistics参数:用于决定是否收集相关的时间参数,true为收集。

如果该参数设为false,则等待事件相关视图也就无法收集到数据。

SQL> SHOW PARAMETER timed_statistics;  ------统计时间

如果statistics_level设置为TYPICAL或ALL,那么timed_statistics该参数为true;

如果statistics_level设置为BASIC,那么timed_statistics该参数为false。

SQL> SHOW PARAMETER statistics_level -----统计数量

一.v$system_event视图介绍

1.字段说明

DESC v$system_event

Name                                 Type         

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

EVENT                               VARCHAR2(64) --等待的事件                      

TOTAL_WAITS                  NUMBER --总等待次数                          

TOTAL_TIMEOUTS           NUMBER --等待超时次数                        

TIME_WAITED                  NUMBER --总等待时间(时间毫秒,1/100秒)                        

AVERAGE_WAIT                NUMBER --平均等待时间(总等待时间/总等待次数)                        

TIME_WAITED_MICRO     NUMBER --总等待时间(时间微秒,1/1000000秒)                           

EVENT_ID                          NUMBER --标识等待事件id                        

WAIT_CLASS_ID                NUMBER --标识等待事件类型id                       

WAIT_CLASS#                  NUMBER --该等待类型的数量                       

WAIT_CLASS                    VARCHAR2(64) --等待类型名称

11g

 19c cdb

2.等待事件类型(WAIT_CLASS)

SELECT DISTINCT wait_class FROM v$system_event;--或直接查看v$system_wait_class视图

WAIT_CLASS

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

Concurrency           --等待用于锁定的数据库资源,如闩

System I/O             --后台进程I/O的等待,包括db file parallel write事件的数据库写程序后台进程(DBWR)等待。还包括与归档有关的等待和重做日志读和写等待User I/O --包括db file sequential read和db file scattered read事件

Configuration        --如checkpoint completed等待事件

Other                    --杂项等待

Application           --由应用代码导致的等待

Idle                      --空闲等待事件表示在会话不活动时发生的等待,如 “SQL*Net message from client”等待事件Commit --由单个等待事件log file sync组成,它是一个由数据库中的提交导致的等待

Network              --网络传递消息过程中的发生等待log file sync(日志文件同步): log file sync 等待时间和事务中指(提交或回滚)相关;

11g

19c cdb

3.当进程在log file sync事件上花费大量时间时,这通常表明过多的提交或短事务。

SELECT event, time_waited,average_wait,total_waits,f.WAIT_CLASS_ID,f.WAIT_CLASS#,f.WAIT_CLASS

FROM v$system_event f

WHERE wait_class NOT IN ('Idle')

ORDER BY time_waited DESC


.v$system_wait_class视图

1.视图字段说明

SQL> DESC v$system_wait_class     --10g新增Name Type         

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

WAIT_CLASS_ID               NUMBER --等待类型id                       

WAIT_CLASS#                 NUMBER --该等待类型的数量                        

WAIT_CLASS                  VARCHAR2(64) --等待类型名称                        

TOTAL_WAITS                 NUMBER --该等待类型事件发生时所等待的时间                       

TIME_WAITED                 NUMBER --所有会话用于等待的时间

2.v$system_wait_class视图和v$system_event视图比较

v$system_wait_class视图是10g新增的,该视图是对类型等待时间的统计。

v$system_event视图可以与v$system_wait_class视图结合查看。

v$system_wait_class视图和v$system_event视图的来源不同,可用v$fixed_view_definition视图查看视图的具体定义,如下所示:

SELECT * FROM v$fixed_view_definition WHERE view_name='V$SYSTEM_EVENT';

select event,total_waits,total_timeouts,time_waited,average_wait, time_waited_micro,total_waits_fg, total_timeouts_fg,time_waited_fg,average_wait_fg,time_waited_micro_fg,event_id,wait_class_id,wait_class#,wait_class,con_id   

from gv$system_event

where inst_id = USERENV('Instance') ;

SELECT * FROM v$fixed_view_definition WHERE view_name='GV$SYSTEM_EVENT';

select d.inst_id,d.kslednam,(s.ksleswts_un + s.ksleswts_fg + s.ksleswts_bg),(s.kslestmo_un + s.kslestmo_fg + s.kslestmo_bg),round((s.kslestim_un + s.kslestim_fg + s.kslestim_bg)/10000),round((s.kslestim_un + s.kslestim_fg + s.kslestim_bg)/(10000 * (s.ksleswts_un + s.ksleswts_fg + s.ksleswts_bg)), 2),(s.kslestim_un + s.kslestim_fg + s.kslestim_bg),s.ksleswts_fg,s.kslestmo_fg,round(s.kslestim_fg/10000),round(s.kslestim_fg/decode(s.ksleswts_fg,0,1,10000 * s.ksleswts_fg), 2),s.kslestim_fg,d.ksledhash, d.ksledclassid,d.ksledclass#,d.ksledclass,s.con_id

from x$kslei s, x$ksled d  

where (s.ksleswts_un > 0 or s.ksleswts_fg > 0 or s.ksleswts_bg > 0)

and s.kslesevt = d.indx;

SELECT * FROM v$fixed_view_definition WHERE view_name='V$SYSTEM_WAIT_CLASS';

select wait_class_id,wait_class#,wait_class,total_waits,time_waited,total_waits_fg,time_waited_fg, con_id

from gv$system_wait_class

where inst_id = USERENV('Instance') ;

SELECT * FROM v$fixed_view_definition WHERE view_name='GV$SYSTEM_WAIT_CLASS';

select s.inst_id,s.kslscsclsid,s.kslscscls,s.kslscsclsname,(s.kslscswts_un + s.kslscswts_fg + s.kslscswts_bg),round((s.kslscstim_un + s.kslscstim_fg + s.kslscstim_bg)/10000),s.kslscswts_fg,round(s.kslscstim_fg/10000),s.con_id

from x$kslscs s

where s.kslscswts_un > 0 or s.kslscswts_fg > 0 or s.kslscswts_un > 0

 .v$session_event视图

1.字段说明

SQL> DESC v$session_event

Name Type         ----------------- ------------

SID NUMBER --会话id                           

EVENT VARCHAR2(64) --等待事件                        

TOTAL_WAITS NUMBER --该会话等待次数                        

TOTAL_TIMEOUTS NUMBER --该会话等待超时次数                        

TIME_WAITED NUMBER --该会话总等待时间(时间毫秒,1/100秒)                           

AVERAGE_WAIT NUMBER --该会话平均等待时间(总等待时间/总等待次数)                        

MAX_WAIT NUMBER --该会话等待时间最大值                     

TIME_WAITED_MICRO NUMBER --该会话总等待时间(时间微秒,1/1000000秒)                         

EVENT_ID NUMBER --事件ID                        

WAIT_CLASS_ID NUMBER --等待类型ID                        

WAIT_CLASS# NUMBER --该等待类型的数量                        

WAIT_CLASS VARCHAR2(64) --等待类型名称  


2.v$session_event视图与v$system_event视图比较

v$session_event视图:会话级的统计
v$system_event视图:系统级的统计


.v$session_wait_class视图
与v$system_wait_class相比多了sid和serial#字段,v$session_wait_class视图表示某一会话的等待时间。

五.v$session_wait视图

1.字段说明

SQL> DESC v$session_wait;

Name                Type       

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

SID                   NUMBER --会话id                       

SEQ#                 NUMBER --标识当前或最新的等待序列号                       

EVENT                VARCHAR2(64) --当前等待事件或最后一次等待事件                      

P1TEXT               VARCHAR2(64) --第一个等待参数的描述                       

P1                    NUMBER --第一个等待参数(十进制)                       

P1RAW                RAW(4) --第一个等待参数(十六进制)                       

P2TEXT                VARCHAR2(64) --第二个等待参数的描述                        

P2                    NUMBER --第二个等待参数(十进制)                       

P2RAW               RAW(4) --第二个等待参数(十六进制)                       

P3TEXT               VARCHAR2(64) --第三个等待参数的描述                       

P3                    NUMBER --第三个等待参数(十进制)                       

P3RAW                RAW(4) --第三个等待参数(十六进制)                        

WAIT_CLASS_ID        NUMBER --等待事件类型ID                       

WAIT_CLASS#          NUMBER --该等待事件数量                       

WAIT_CLASS           VARCHAR2(64) --等待事件名称                      

WAIT_TIME            NUMBER 该字段已废弃,可通过SECONDS_IN_WAIT和STATE字段替代(具体含义,0代表正在等待;>0表示最后一次等待的时间,单位为百分之一秒;-1表示等待时间小于百分之一秒;-2表示参数TIMED_STATISTICS被设置为false)                      

SECONDS_IN_WAIT    NUMBER --如果该会话处于等待状态,则表示当前等待的总时间;如果非等待状态,则表示自最后一次等待以来的总时间                       

STATE                 VARCHAR2(19) --其值可为 WAITING,WAITED UNKNOWN TIME,WAITED SHORT TIME ,WAITED KNOWN TIME


state值的具体含义:WAITING表示会话正在等待;
WAITED UNKNOWN TIME表示最后一次等待时间不知,即TIMED_STATISTICS被设置为false;
WAITED SHORT TIME表示最后一次等待时间少于百分之一秒;
WAITED KNOWN TIME表示最新一次等待时间,可通过wait_time列查看。即该等待时间正好由等待状态得到资源转为执行状态。


2.注意事项

1)oracle11g,在该视图中新增了WAIT_TIME_MICRO,TIME_REMAINING_MICRO,TIME_SINCE_LAST_WAIT_MICRO字段。而SECONDS_IN_WAIT已废弃,用
WAIT_TIME_MICRO and TIME_SINCE_LAST_WAIT_MICRO替代。
TIME_REMAINING_MICRO字段含义:

为0表示当前等待超时;

>0表示当前等待还需等待的时间;

-1表示当前等待将无限制地等待;null表示该会话当前无等待


2)p1,p2,p3参数代表的含义可以通过v$event_name视图的PARAMETER1,PARAMETER2,PARAMETER3查找。不过v$session_wait视图本身中的P1TEXT,P2TEXT,P3TEXT已经对p1,p2,p3进行了说明,及P1TEXT,P2TEXT,P3TEXT字段值与PARAMETER1,PARAMETER2,PARAMETER3一样。


六、v$session视图

该视图包含了v$session_wait视图的所有字段。该视图记录了每个会话的具体信息。
获取不同用户会话所面临的等待类型及他们所执行的sql语句文本,如下脚本:

SELECT s.username, t.sql_text, s.event

FROM v$session s, v$sqltext t

WHERE s.sql_hash_value = t.hash_value

AND s.sql_address = t.address

AND s.type <> 'BACKGROUND'

ORDER BY s.sid, t.hash_value, t.piece;


七、v$sysmetric视图
   这是一个显示最近时间间隔的系统度量值,时间间隔为60秒。通过这个视图也可以查看在一个短期间隔内的Buffer Cache Hit Ratio,Memory Sorts Ratio,Redo Allocation Hit Ratio。

八、v$waitclassmetric:显示最近60秒时间间隔中等待类的度量值。

此视图最多保存一个小时的信息。

SELECT * FROM v$waitstat

v$session_wait_history


       该视图保存每个活动会话的最后10个等待事件的有关信息。如v$session和v$session_wait视图只显示最近一次等待的信息。

SELECT seq#, event, wait_time, p1, p2, p3

FROM v$session_wait_history

--WHERE sid = 140

ORDER BY seq#;


九、v$active_session_history:当前的活动会话历史

1.--查询导致最多等待的对象及这些对象在最后15分钟内等待的事件类型

SELECT o.object_name,o.object_type,a.event,SUM(a.wait_time + a.time_waited) total_wait_time

FROM v$active_session_history a, dba_objects o

WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE

AND a.current_obj# = o.object_id

GROUP BY o.object_name, o.object_type, a.event

ORDER BY total_wait_time;--列出数据库中最后15分钟内最重要的等待事件

2.--等待最多的用户

SELECT a.event,SUM(a.wait_time + a.time_waited) total_wait_time

FROM v$active_session_history a

WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE

GROUP BY a.event

ORDER BY total_wait_time DESC;--等待最多的用户

3.--确定等待最多的sql

SELECT s.sid,s.username,SUM(a.wait_time + a.time_waited) total_wait_time

FROM v$active_session_history a,v$session s

WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 

AND SYSDATE

AND a.session_id = s.sid

GROUP BY s.sid,s.username

ORDER BY total_wait_time DESC;--确定等待最多的sql

4.--总计等待的时间

SELECT a.user_id,s.sql_text,d.username,SUM(a.wait_time + a.time_waited) total_wait_time

FROM v$active_session_history a, v$sqlarea s, dba_users d

WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880

 AND SYSDATE

AND a.sql_id = s.sql_id

AND a.user_id = d.user_id

GROUP BY a.user_id, s.sql_text, d.username;


dba_hist_active_sess_history:每60分钟,MMON后台进程都要刷新过滤了得ASH数据到磁盘,使其成为按小时的AWR快照的一部分。若ASH缓冲区已满,则MMML后台进程进行数据的刷新。ASH数据被刷新到磁盘后,就不能在v$active_session_history视图中看到它了。此时要查看历史数据,就必须通过dba_hist_active_sess_history视图。


十.段级动态性能视图:

使用它们可以找出哪些表和索引正在使用大量资源或具有大量的等待。
select * from v$segstat_name


select * from v$segstat


select * from v$segment_statistics

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Running Sun丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值