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.
Par Herve Etche, MBA
- Oracle Database 11g Administrator Certified Master (OCM)
- Oracle Certified Expert, RAC 11g and Grid Infrastructure Administrator
- Oracle Database 11g Performance Tuning Certified Expert
- Oracle Exadata 11g Certified Implementation Specialist
- Oracle Database 11g, 10g & 9i Certified Professional
- Oracle Application Server 10g Certified Professional
jeudi 31 janvier 2013
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...
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...