jeudi 31 janvier 2013

The filename, directory name, or volume label syntax is incorrect.

En désinstallant le client oracle 11.2.0.2 sur une machine windows xp, j'ai rencontré le problème suivant:

C:\lgc\OraCli11gR2\client1\deinstall>deinstall.bat
Checking for required files and bootstrapping ...
Please wait ...
        1 file(s) copied.
        1 file(s) copied.
The filename, directory name, or volume label syntax is incorrect.
The directory name is invalid.
The filename, directory name, or volume label syntax is incorrect.
The filename, directory name, or volume label syntax is incorrect.
C:\lgc\OraCli11gR2\client1\deinstall>

Pour connaitre la cause de ce message d'erreur, dans le script ORACLE_HOME\deinstall\deinstall.bat , mettre la ligne "echo off" en commentaire pour avoir plus d'information lors de l'exécution:

La ligne
@echo off
Devient
Rem @echo off

Ensuite lancer la désinstallation de nouveau:

 set startupCmd=C:\DOCUME~1\adb-016\LOCALS~1\Temp\1\startup.bat 1 ERROR: Cannot
find bin\oramts_deinst.exe in the ORACLE_HOME C:\lgc\OraCli11gR2\client1.  You m
ust download the standalone version of the deinstall tool from OTN to deconfigure/deinstall this Oracle Home. C:\lgc\OraCli11gR2\client1
)  else (set startupCmd=C:\lgc\OraCli11gR2\client1\deinstall\\utl\startup.bat 1
ERROR: Cannot find bin\oramts_deinst.exe in the ORACLE_HOME C:\lgc\OraCli11gR2\c
lient1.  You must download the standalone version of the deinstall tool from OTN
 to deconfigure/deinstall this Oracle Home. C:\lgc\OraCli11gR2\client1\deinstall
\ C:\lgc\OraCli11gR2\client1  )
        1 file(s) copied.
        1 file(s) copied.

C:\lgc\OraCli11gR2\client1\deinstall>C:\DOCUME~1\adb-016\LOCALS~1\Temp\1\startup
.bat 1 ERROR: Cannot find bin\oramts_deinst.exe in the ORACLE_HOME C:\lgc\OraCli
11gR2\client1.  You must download the standalone version of the deinstall tool from OTN to deconfigure/deinstall this Oracle Home. C:\lgc\OraCli11gR2\client1
The filename, directory name, or volume label syntax is incorrect.
The directory name is invalid.
The filename, directory name, or volume label syntax is incorrect.
The filename, directory name, or volume label syntax is incorrect.

La section en gras montre qu'il manque un fichier de le répertoire $ORACLE_HOME\bin.
Je ne saurais expliquer la raison pour laquelle le fichier manque, mais on recommande de télécharger la version standalone de l'outil "deinstall" pour désinstaller le client.

Dans mon cas, j'avais une installation similaire sur une autre machine. J'ai donc copié le fichier manquant à partir de l'autre machine. Après ça la désinstallation a fonctionné sans que j'aie eu besoin de télécharger la version standalone de l'outil "deinstall".

Hope it helps.

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...