N’oubliez-pas hanganalyze et systemstate

La version détaillée est en anglais sur mon blog à dbi services.
Ici un résumé, laissez un commentaire ici pour plus de détail en français.

Il arrive parfois que l’instance soit bloquée et qu’il faille faire un shutdown abort puis redémarrer.
Mais si on ne fait rien, on ne pourra pas analyser la root cause du problème.

Pour avoir les infos sur la situation de blocage (hanganalyze) et les infos complètes du système à ce moment là (systemstate), afin de pouvoir analyser et/ou ouvrir un SR, il faut penser à générer les dumps correspondants:

sqlplus / as sysdba
 oradebug setmypid
 oradebug unlimit
 oradebug hanganalyze 3
 oradebug dump ashdumpseconds 30
 oradebug systemstate 266
 oradebug tracefile_name

Si la situation est telle qu’on n’arrive même pas à se connecter sysdba, il est possible d’essayer la connection -prelim et de s’attacher à une session existante (le process DIAG par exemple):

sqlplus -prelim / as sysdba
 oradebug setorapname diag
 oradebug unlimit
 oradebug hanganalyze 3
 oradebug dump ashdumpseconds 30
 oradebug systemstate 266
 oradebug tracefile_name

Si par contre on peut se connecter et faire des requêtes, la vue V$WAIT_CHAINS donne les infos sur les sessions bloquées.
Un exemple où une session a posé plusieurs verrous puis attend sur un dbms_lock.sleep (‘PL/SQL lock timer’), bloquant des session qui attendent de poser leur verrou (enq: TM – contention)

CHAIN_ID CHAIN CHAIN_SIGNATURE INSTANCE OSID PID SID BLOCK
1 FALSE ‘PL/SQL lock timer’ <='enq: TM
– contention' <='enq: TM – contention'
1 7929 42 23 TRUE
1 FALSE ‘PL/SQL lock timer’ <='enq: TM
– contention' <='enq: TM – contention'
1 7927 41 254 TRUE
1 FALSE ‘PL/SQL lock timer’ <='enq: TM
– contention' <='enq: TM – contention'
1 7925 39 256 FALSE
2 FALSE ‘PL/SQL lock timer’ <='enq: TM
– contention' <='enq: TM – contention'
1 7933 46 25 TRUE
3 FALSE ‘PL/SQL lock timer’ <='enq: TM
– contention' <='enq: TM – contention'
1 7931 45 260 TRUE
4 FALSE ‘PL/SQL lock timer’ <='enq: TM
– contention' <='enq: TM – contention'
1 7935 47 262 TRUE

On voit toute la chaîne des session bloquées, avec la racine. Et même lorsque qu’il ne s’agit pas d’une session utilisateur active.

Laisser un commentaire