Sess query sql

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic (Sessions)
Voir aussi Sess users · Sess user sessions

Sess query sql liste d'abord toutes les sessions connectées, puis demande interactivement un SID et affiche le texte SQL associé au curseur actuellement pointé par cette session (v$sqlarea via sql_address) — pratique pour identifier en une commande ce qu'exécute une session repérée comme bloquante ou consommatrice de ressources.

Limite : la jointure sur sql_address/sql_hash_value est l'approche historique (pré-9i). Depuis Oracle 9i, v$session.sql_id pointe directement vers v$sql.sql_id, une jointure plus simple et plus fiable — conservée ici uniquement pour compatibilité avec l'original du script.

Script

SET TERMOUT OFF
COLUMN current_instance NEW_VALUE current_instance NOPRINT
SELECT rpad(instance_name, 17) current_instance FROM v$instance;
SET TERMOUT ON

PROMPT
PROMPT +------------------------------------------------------------------------+
PROMPT | Report   : SQL Query Search Interface                                  |
PROMPT | Instance : &current_instance                                           |
PROMPT +------------------------------------------------------------------------+

SET LINESIZE 180
SET PAGESIZE 50000
CLEAR COLUMNS
CLEAR BREAKS
CLEAR COMPUTES

COLUMN sid             FORMAT 999999   HEADING 'SID'
COLUMN serial_id       FORMAT 99999999 HEADING 'Serial ID'
COLUMN session_status  FORMAT a9       HEADING 'Status'
COLUMN oracle_username FORMAT a18      HEADING 'Oracle User'
COLUMN os_username     FORMAT a18      HEADING 'O/S User'
COLUMN os_pid          FORMAT a8       HEADING 'O/S PID'
COLUMN session_program FORMAT a40      HEADING 'Session Program' TRUNC

PROMPT
PROMPT +------------------------------------------------------------------------+
PROMPT | Listing all User Sessions                                              |
PROMPT +------------------------------------------------------------------------+

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.program session_program
FROM
    v$process p
  , v$session s
WHERE
    p.addr(+) = s.paddr
ORDER BY
    sid
/

-- Sélectionner un SID dans la liste ci-dessus :
ACCEPT ora_sid CHAR PROMPT 'Enter Oracle SID: '

COLUMN sql_text FORMAT a80

SELECT
    a.sql_text
FROM
    v$sqlarea a
  , v$session s
WHERE
      a.address = s.sql_address
  AND s.sid = &&ora_sid
/

Voir aussi