mercredi 16 janvier 2013

CHECK TIMED OUT dans le résultat de la commande "crsctl stat res -t"

Dans un environnement RAC à 2 noeuds avec le Grid infrastructure 11.2.0.3 et des bases de données 10.2.0.3 je constate que l'une des instances ne réponds et je décide d'investiguer.

Je commence par la commande "crsctl stat res -t" et je constate le statut "CHECK TIMED OUT" pour certaines ressources:

[oracle@reds ~]$ GRID_HOME/bin/crsctl stat res -t
...
ora.dste.ADMIN_DSTE.cs
      1        ONLINE  INTERMEDIATE reds                     CHECK TIMED OUT
ora.dste.ADMIN_DSTE.dste1.srv
      1        ONLINE  ONLINE       reds
ora.dste.DSTE_SRV.cs
      1        ONLINE  INTERMEDIATE reds                     CHECK TIMED OUT
ora.dste.DSTE_SRV.dste1.srv
      1        ONLINE  ONLINE       texans
ora.dste.DSTE_SRV.dste2.srv
      1        ONLINE  ONLINE       reds
ora.dste.NONRAC_T.cs
      1        ONLINE  INTERMEDIATE reds                     CHECK TIMED OUT

...

Après quelques recherches, je constate qu'il y a plusieurs processus "racgmain check" sur le serveur:

[oracle@reds ~]$ ps -ef|grep "racgmain check"|grep -v grep
oracle     315     1  0  2012 ?        00:00:00 /ora01/logi/oracle/product/bd10203t/bin/racgmain check
oracle     319     1  0  2012 ?        00:00:00 /ora01/logi/oracle/product/bd10203t/bin/racgmain check
oracle     363     1  0 Jan06 ?        00:00:00 /ora01/logi/oracle/product/bd10203t/bin/racgmain check
oracle     417     1  0  2012 ?        00:00:00 /ora01/logi/oracle/product/bd10203t/bin/racgmain check
oracle     530     1  0  2012 ?        00:00:00 /ora01/logi/oracle/product/bd10203t/bin/racgmain check
oracle     552     1  0 Jan02 ?        00:00:00 /ora01/logi/oracle/product/bd10203t/bin/racgmain check
oracle     561     1  0  2012 ?        00:00:00 /ora01/logi/oracle/product/bd10203t/bin/racgmain check
oracle     598     1  0 Jan02 ?        00:00:00 /ora01/logi/oracle/product/bd10203t/bin/racgmain check

...
[oracle@reds ~]$ ps -ef|grep "racgmain check"|grep -v grep|wc -l
1159

En tout il y a donc 1159 processus de ce genre.

Pour corriger le problème je n'ai pas eu d'autre choix que de redémarrer l'instance.

[oracle@reds ~]$ $ORACLE_HOME/bin/srvctl stop instance -d dste -i dste1

Puis il faut tuer tous les processus en question:

[oracle@reds ~]$ for x in `ps -ef|grep "racgmain check"|grep -v grep|awk '{print $2}'`; do  kill -9 $x; done

Pour ne plus que le problème se reproduise, il faut suivre le workaround du document
10g/11gR1: Many Orphaned Or Hanging "racgmain" Processes Running [ID 732086.1]

Le workaround consiste à modifier le fichier $ORACLE_HOME/bin/racgwrap comme suit:

Supprimer les lignes suivantes (à la fin du fichier):

$ORACLE_HOME/bin/racgmain "$@"
status=$?
exit $status


Les remplacer par:

# Line added to fix for Bug 6196746
exec $ORACLE_HOME/bin/racgmain "$@"


Hope it helps...

Aucun commentaire:

Enregistrer un commentaire