Sess users by CPU

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic
Voir aussi Sess users active · Sess users by cursors · Sess users by io · Sess users by memory · Sess users by transactions

Sess users by CPU liste les sessions actuellement connectées à l'instance, triées par temps CPU consommé, pour repérer en un coup d'œil les sessions les plus gourmandes en processeur.

Ce script fait partie d'une famille de scripts de diagnostic session partageant le même schéma de requête — jointure entre v$process, v$session, v$sesstat et v$statname — seules la statistique ciblée et la colonne de tri changent : voir aussi Sess users by cursors (curseurs ouverts), Sess users by io (I/O logiques), Sess users by memory (mémoire PGA/UGA) et Sess users by transactions (transactions validées).

Script

SET LINESIZE 180
SET PAGESIZE 50000
SET FEEDBACK 6
SET VERIFY OFF

COLUMN sid              FORMAT 999999            HEADING 'SID'
COLUMN serial_id        FORMAT 99999999          HEADING 'Serial ID'
COLUMN session_status   FORMAT a9                HEADING 'Statut'
COLUMN oracle_username  FORMAT a18               HEADING 'Utilisateur Oracle'
COLUMN os_username      FORMAT a18               HEADING 'Utilisateur OS'
COLUMN os_pid           FORMAT a8                HEADING 'PID OS'
COLUMN session_machine  FORMAT a30 TRUNC         HEADING 'Machine'
COLUMN session_program  FORMAT a40 TRUNC         HEADING 'Programme'
COLUMN cpu_value        FORMAT 999,999,999,999   HEADING 'CPU (centièmes de sec.)'

SELECT
    s.sid           sid
  , s.serial#       serial_id
  , s.status        session_status
  , s.username      oracle_username
  , s.osuser        os_username
  , p.spid          os_pid
  , s.machine       session_machine
  , s.program       session_program
  , sstat.value     cpu_value
FROM
    v$process  p
  , v$session  s
  , v$sesstat  sstat
  , v$statname statname
WHERE
      p.addr (+)          = s.paddr
  AND s.sid               = sstat.sid
  AND statname.statistic# = sstat.statistic#
  AND statname.name       = 'CPU used by this session'
ORDER BY cpu_value DESC;

La valeur de CPU retournée est cumulée depuis l'ouverture de la session (en centièmes de seconde), pas une consommation instantanée. Pour repérer une session qui consomme du CPU en ce moment, il faut soit rejouer le script à quelques secondes d'intervalle et comparer le delta, soit se tourner vers un outil temps réel comme Top ou Ps côté OS.

Voir aussi