暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

九大性能视图

原创 不吃草的牛_Nick 2022-07-31
496

和session相关的主要视图v$session->v$session_wait

v$session 视图记录了当前连接 Session 的信息,这些信息包括用户名、连接主机、Session正在执行的SQL的SQL_ADDRESS、SQL_HASH_VALUE等,非常详尽。v$session_wait则记录了当前连接session正在等待的资源信息。在Oracle 10g中,Oracle将v$session_wait视图的内容合并入v$session视图,使得对于当前session信息的获取更加简便。

 

通过这两个视图,可以快速得到当前连接 session 的状态,如果数据库正在经历诸如等待、竞争、锁定等问题,通过这两个视图就可以找到性能问题的原因,以及正在导致这些问题的session。


和Session级统计信息相关的视图v$sesstat->v$sysstat

v$sesstat视图记录了session的统计信息,这些统计信息包括诸如session的逻辑数据读取、物理数据读取、排序操作等。v$sesstat收集的信息同时会累积进入v$sysstat视图,v$sysstat视图记录的是整个数据库系统的统计信息。

 

通过v$sesstat可以对当前连接运行的session信息进行获取和分析,通过v$sysstat则可以对数据库启动以来的运行状况获得整体印象。


和等待事件相关的主要视图v$session_event->v$system_event

v$session_event记录了当前连接session的等待事件,这些信息最终被累积进入v$system_event视图,v$system_event 记录的是整个数据库系统自数据库启动以来的等待信息汇总。通过这两个视图,可以了解到数据库的等待消耗在哪些事件上,从而可以进一步的诊断其具体问题。

 

这里需要对 v$session_wait 和 v$session_event 视图进行一点区别和说明。v$session_event视图记录当前连接session的等待事件信息,这些等待事件是session生命周期内的各种等待事件的累计,比如查询当前session的累积等待:

select * from v$session_event where sid = (select sid from v$mystat where rownum <2);

 

该视图记录不同等待事件的等待时间、等待次数等信息。

 

而 v$session_wait 记录的是活动 session 当前正在等待的资源信息,是实时信息的记录, v$session_wait 的实时等待结束之后才能被记入 v$session_event。简单粗略一点来描述, v$session_wait是“现在”,v$session_event是“曾经”:

 

当然v$session_wait和v$session_event不仅仅是“现在”和“曾经”这么简单,v$session_wait视图记录的信息更为复杂和全面,在这个视图中,Oracle通过额外的参数(P1、P2、P3)将等待事件具体等待的资源等信息呈现出来,对于不同的事件,这3个参数具有不同的含义,比如对于db file scattered read等待,P1就代表文件号,P2代表数据块号,P3则代表块数(P代表Parameter)。

select * from v$event_name where name='db file scattered read';

 

可以注意到,在Oracle 9i中,v$session和v$session_wait的信息并没有被Statspack收集,而v$system_event视图记录的又是累积信息,这也就意味着我们不能对session的历史进行追踪,也就无法得知一个等待是哪一个session如何以及何时引发的,针对这一情况,Oracle 10g中开始增强,在下一节中我们会详细介绍Oracle 10g的变化。

 

最后列举一下:

(1)v$session + v$session_wait = Oracle10g v$session;

(2)v$sysstat;

(3)v$system_event;

(4)v$process;

(5)v$sql;

(6)v$sqltext;

(7)v$lock;

(8)v$latch_children;

(9)v$bh。

 

除了数据库等待、统计信息等,我还关心进程信息( v$process )、闩(v$latch_children)竞争信息、锁(v$lock)等待信息、SQL(v$sql、v$sqltext)信息、Buffer信息(v$bh),当然还有很多重要视图值得关注,但是如果只能列出9个视图?你会怎样排列呢?

 

 

 

 

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论