使用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

相关内容

热门资讯

Google在港推出AI代理G... 观点网讯:7月29日,Google在香港推出AI代理Gemini Spark,该代理可全天候在后台运...
5G+165Hz!联想新品官宣... 近两年来,小屏平板一直是比较有趣的一个品类。 不同于大平板注重效率、手机追求万能的特点,拯救者Y70...
原创 马... 马斯克又出来了。这次说2036年钱就没用了。 理由是人工智能加机器人,东西多到你用不完,还拿钱干嘛...
美的集团:我国智能家居互联互通... IT之家 7 月 30 日消息,美的集团今日发布公告,7 月 21 日至 23 日,智能家居互联互通...
华为新款MatePad Pro... 【CNMO科技消息】7月30日,@华为终端 官宣全新旗舰平板华为MatePad Pro。 新款华为...
从实验室到实景验证:6G光子太... 全息通信是第六代移动通信(6G)的典型应用场景之一,旨在通过融合无线传输与全息三维成像技术,实现超大...
从“能对话”到“能干活”——人... 【经济界面】 光明日报记者 刘坤 李晓东 周洪双 人工智能(AI)眼镜化身为个人“助理”,实时进行...
【全新发布】UminiP Pr... (来源:洲明科技)
日本通过“H3火箭8号”发射失... △H3火箭(资料图) 日本文部科学省30日召开关于去年“H3火箭8号”发射失败的会议。会议通过的最终...
互联网巨头抢滩健康硬件,上游芯... 封面新闻记者 付文超 当下,互联网巨头对健康硬件的押注,正在成为产业现实,加速拉动整个产业链步入新一...