使用DATABASE Log off收集oracle 等待事件信息
admin
2023-05-07 21:02:05
0

实例级别的监控,一直开启并且低开销:

建立基础表:

create table sys.sesstat_history tablespace EOL as
SELECT c.username,
       c.osuser,
       a.sid,
       c.serial#,
       c.paddr,
       c.process,
       c.logon_time,
       a.statistic#,
       b.name,
       a.value,
       SYSDATE AS logoff_timestamp
  FROM v$sesstat a, v$statname b, v$session c
 WHERE 1 = 2
create table sys.session_event_history tablespace EOL
as SELECT b.sid,
       b.SERIAL#,
       b.username,
       b.osuser,
       b.paddr,
       b.process,
       b.logon_time,
       b.type,
       a.event,
       a.total_waits,
       a.total_timeouts,
       a.time_waited,
       a.average_wait,
       a.max_wait,
       SYSDATE AS logoff_timestamp
  FROM v$session_event a, v$session b
 WHERE 1 = 2

创建触发器:

CREATE OR REPLACE TRIGGER sys.logoff_trig

  BEFORE logoff ON DATABASE

DECLARE

  logoff_sid  PLS_INTEGER;

  logoff_time DATE := SYSDATE;

BEGIN

  SELECT sid INTO logoff_sid FROM v$mystat WHERE rownum < 2;

  INSERT INTO sys.session_event_history

    (sid,

     serial#,

     username,

     osuser,

     paddr,

     process,

     logon_time,

     TYPE,

     event,

     total_waits,

     total_timeouts,

     time_waited,

     average_wait,

     max_wait,

     logoff_timestamp)

    SELECT b.sid,

           b.serial#,

           b.username,

           b.osuser,

           b.paddr,

           b.process,

           b.logon_time,

           b.type,

           a.event,

           a.total_waits,

           a.total_timeouts,

           a.time_waited,

           a.average_wait,

           a.max_wait,

           SYSDATE AS logoff_timestamp

      FROM v$session_event a, v$session b

     WHERE a.sid = b.sid

       AND b.username = login_user

       AND b.sid = logoff_sid;

  INSERT INTO sys.sesstat_history

    (username,

     osuser,

     sid,

     serial#,

     paddr,

     process,

     logon_time,

     statistic#,

     NAME,

     VALUE,

     logoff_timestamp)

    SELECT c.username,

           c.osuser,

           a.sid,

           c.serial#,

           c.paddr,

           c.process,

           c.logon_time,

           a.statistic#,

           b.name,

           a.value,

           logoff_time

      FROM v$sesstat a, v$statname b, v$session c

     WHERE a.statistic# = b.statistic#

       AND a.sid = c.sid

       AND b.name IN ('CPU used where call started',

                      'CPU used by this session',

                      'recursive cpu usage',

                      'parse time cpu')

       AND c.sid = logoff_sid

       AND c.username = login_user;

END;

查询消耗CPU的等待事件排名:

SQL> SELECT *

  FROM (SELECT a.sid, a.serial#, a.event, a.total_waits

          FROM session_event_history a

         ORDER BY a.time_waited DESC)

 WHERE rownum < 100;

  2    3    4    5  

       SID    SERIAL# EVENT                                                        TOTAL_WAITS

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

      1858       8391 SQL*Net message from client                                       147692

      1437      52565 SQL*Net message from client                                        34305

       584      52801 SQL*Net message from client                                        85105

       585      40229 SQL*Net message from client                                       163331

       874       3263 SQL*Net message from client                                        77519

      1285      21797 SQL*Net message from client                                        19041

       861      25015 SQL*Net message from client                                          194

       726       9275 SQL*Net message from client                                        66724

      1717       1935 SQL*Net message from client                                        92394

      1014        883 SQL*Net message from client                                        34455

        21      10841 SQL*Net message from client                                        28685

相关内容

热门资讯

武汉大学打开大门,以开放拆掉“... 澎湃新闻主笔 沈彬5月13日,武汉大学正式取消社会公众进校预约制度。公众无需任何预约,仅凭本人身份证...
中方很直白:对欧洲非常失望,把... 【文/观察者网 柳白】欧盟屡借“安全风险”和“产业振兴”之名,行保护主义与差别对待之实,遭中方明确回...
韩国赚大了,但大麻烦也来了 AI正在改变世界,但不得不说,最先被深刻重塑、掀起财富狂潮的,还是韩国。有些数据,说出来都不敢相信自...
以色列执政联盟提交提前解散议会... 以色列执政联盟主席奥菲尔·卡茨13日与联盟各派别领导人共同提交一项解散议会的议案,此举可能触发以色列...
内塔尼亚胡首次公开证实曾秘访,... 以色列总理办公室13日证实,以总理内塔尼亚胡在以色列对伊朗发动大规模军事行动期间曾秘密访问阿联酋,并...
1万个外资项目,看好这个县级市 在昆山高新区的沪士电子股份有限公司门口,运输建材的卡车与满载成品的物流货车交错而行。新厂房扩建与车间...
特朗普抵达酒店,车队驶过持续6... 美国总统特朗普车队于5月13日晚8点30分左右抵达位于北京东三环的下榻酒店。凤凰卫视驻北京记者在酒店...
少出国、少用油、少买金子,莫迪... 【文/观察者网 熊超然】上周末,印度总理莫迪呼吁民众在中东战争持续的这段时间里,未来一年内适度减少燃...
岛内“新地标”,沦为民进党“抢... 被视为岛内近年来最为重大的公共建设项目之一的新北市淡江大桥,于5月12日正式通车。然而,因民进党当局...
副秘书长在以色列机场遭扣留,联... 新华社联合国5月13日电 联合国秘书长副发言人哈克13日就联合国负责安全和安保事务的副秘书长吉勒·米...