Using Time Model to obtain list of the top sessions

Como já citado em artigos passados, temos uma view chamada “V$SESS_TIME_MODEL” que nos ajuda a identificar sessões no banco de dados que tem o seu reflexo direto na Time Model, e o objetivo é via consulta explorarmos essas informação.

Ambiente de laboratório:

SQL> SELECT NAME,LOG_MODE,OPEN_MODE FROM V$DATABASE;
 
NAME      LOG_MODE     OPEN_MODE
--------- ------------ --------------------
CORTEX    ARCHIVELOG   READ WRITE

Deixando nosso SwingBench consumir nosso banco de dados:

Na consulta, conseguimos localizar os SIDs que estão realizando as operações no banco e o seu respectivo reflexo na Time Model:

col SID format 999999
col USERNAME format a10
col DBTIME format 9999999999999
col WAITTIME format 9999999999999
col WAITPCT format 99999.99
col ONCPUPCT format 99999.99
SELECT M.SID, S.USERNAME
           ,VALUE DBTIME
           ,WAITTIME WAITTIME
           ,ROUND((WAITTIME/VALUE)*100,2) WAITPCT
           ,ROUND(((VALUE-WAITTIME)/VALUE)*100,2) ONCPU_PCT
      FROM(SELECT SID, STAT_ID, STAT_NAME ,VALUE
            ,VALUE - (LEAD(VALUE,1) OVER(PARTITION BY SID ORDER BY SID,STAT_NAME DESC)) WAITTIME
           FROM V$SESS_TIME_MODEL
           WHERE STAT_NAME IN ('DB time','DB CPU')) M,
           V$SESSION S
WHERE M.SID = S.SID
      AND STAT_NAME='DB time' AND WAITTIME>0
ORDER BY WAITPCT DESC;
SQL> col SID format 999999
col USERNAME format a10
col DBTIME format 9999999999999
col WAITTIME format 9999999999999
col WAITPCT format 99999.99
col ONCPUPCT format 99999.99
SQL> SELECT M.SID, S.USERNAME
           ,VALUE DBTIME
           ,WAITTIME WAITTIME
           ,ROUND((WAITTIME/VALUE)*100,2) WAITPCT
SQL> SQL>            ,ROUND(((VALUE-WAITTIME)/VALUE)*100,2) ONCPU_PCT
      FROM(SELECT SID, STAT_ID, STAT_NAME ,VALUE
            ,VALUE - (LEAD(VASQL> LUE,1) OVER(PARTITION BY SID ORDER BY SID,STAT_NAME DESC)) WAITTIME
           FROM V$SESS_TIME_MODEL
           WHERE STAT_NAME IN ('DB time','DB CPU')) M,
SQL> SQL>                  V$SESSION S
  2    3    4    5    6    7    8    9   10   11  WHERE M.SID = S.SID
      AND STAT_NAME='DB time' AND WAITTIME>0
ORDER BY WAITPCT DESC;
 12   13
    SID USERNAME           DBTIME       WAITTIME   WAITPCT  ONCPU_PCT
------- ---------- -------------- -------------- --------- ----------
      9 SYSRAC             535781         451829     84.33      15.67
    150 SOE             168723148      139996429     82.97      17.03
     33 SOE             166709289      138275585     82.94      17.06
     22 SOE             165146180      136446779     82.62      17.38
    274 SOE             164340363      135708912     82.58      17.42
     32 SOE             166387021      137342077     82.54      17.46
     35 SOE             164256973      135493087     82.49      17.51
    259 SOE             165323445      136383187     82.49      17.51
    385 SOE             164516552      135609739     82.43      17.57
    151 SOE             165230953      136076937     82.36      17.64
    257 SOE             164725390      135591012     82.31      17.69
 
    SID USERNAME           DBTIME       WAITTIME   WAITPCT  ONCPU_PCT
------- ---------- -------------- -------------- --------- ----------
     20 SOE             164638128      135447480     82.27      17.73
    154 SOE             163337255      134281840     82.21      17.79
     10 SOE             163324712      134209261     82.17      17.83
    387 SOE             161281409      132298423     82.03      17.97
    386 SOE             163700148      134218205     81.99      18.01
    152 SOE             159821588      130991520     81.96      18.04
    273 SOE             159152797      130146077     81.77      18.23
    382 SOE             156862463      127944738     81.56      18.44
    367 SOE             160049901      130482029     81.53      18.47
    272 SOE             160056048      130338785     81.43      18.57
    128 SYS                360087         208223     57.83      42.17
 
22 rows selected.

Obs: Este procedimento foi criado pelo senhor Ahmed Baraka (www.ahmedbaraka.com) e foi apenas reproduzido por mim em um laboratório pessoal para fins de aprendizado.

Leave a Comment

Your email address will not be published.