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