Introduction
Ce cas de figure doit rester un cas exceptionnel, mais si le mot de passe sa
d’un serveur Sybase Adaptive Server Enterprise est perdu, celui-ci peut être
réinitialisé avec l’option -psa lors du redémarrage du serveur ASE. La
procédure est décrite dans cette note avec la réinitialisation du mot de passe
sa du serveur ASE DBA_T1_ASE (Sybase 15.0) sur une plateforme Sun Solaris.
Arrêt du serveur ASE (kill -9)
Si le serveur ASE DBA_T1_ASE est en cours d’exécution, il va falloir
malheureusement l’éteindre violemment avec la commande kill -9. Utiliser la
commande ps -ef pour retrouver le process dataserver correspondant au serveur
ASE DBA_T1_ASE :
sybase@DBA_T1_ASE> ps -ef | grep 'DBA_T1_ASE'sybase 7244 7243 /Software/sybase/sybase-15.0/ASE-15_0/bin/dataserver -sDBA_T1_ASE -d/dba/sybase/...
Le process dataserver parent du serveur DBA_T1_ASE est le process 7244 (PID)
dans cet exemple.
Si il n’y a aucun résultat car le mot clé DBA_T1_ASE est trop loin dans la
ligne de commandes dataserver, utiliser /usr/ucb/ps -auxwww qui va plus en
profondeur dans l’affichage de la ligne de commandes (attention : /usr/ucb/ps
n’est pas toujours installé).
En fonction des paramètres ASE 'number of engines at startup' et 'max online
engines', des process fils pour le serveur DBA_T1_ASE peuvent exister, ce qui
est le cas ici. Pour retrouver les process fils éventuels, exécuter la commande
ps -ef en recherchant le PID du process parent dataserver :
sybase@DBA_T1_ASE> ps -ef | grep 7244sybase 7245 7244 /Software/sybase/sybase-15.0/ASE-15_0/bin/dataserver -ONLINE:1,0,0xffff sybase 7246 7244 /Software/sybase/sybase-15.0/ASE-15_0/bin/dataserver -ONLINE:2,0,0xffff sybase 7247 7244 /Software/sybase/sybase-15.0/ASE-15_0/bin/dataserver -ONLINE:3,0,0xffff
Lancer alors la commande kill -9 sur les process fils et enfin le process
parent :
sybase@DBA_T1_ASE> kill -9 7247
sybase@DBA_T1_ASE> kill -9 7246
sybase@DBA_T1_ASE> kill -9 7245
sybase@DBA_T1_ASE> kill -9 7244
Si un seul des process parent et fils n’est pas tué, la mémoire partagée et le port ne sont pas relaxés, ce qui empêche le redémarrage du serveur ASE.
Redémarrage avec l’option -psa
Le fichier de démarrage RUN_<servername> d’un serveur Sybase ASE est
classiquement localisé dans le répertoire $SYBASE/$SYBASE_ASE/install pour les
versions supérieures à la version 11.9.2
(/Software/sybase/sybase-15.0/ASE-15_0/install dans la norme adoptée ici). Le
fichier de démarrage peut également être personnalisé ou normalisé.
Dans tous les cas de figure, modifier le fichier de démarrage pour y ajouter
l’option -psa dans la ligne de commande démarrant le binaire dataserver pour le
serveur DBA_T1_ASE :
$SYBASE/$SYBASE_ASE/install/RUN_DBA_T1_ASE
$SYBASE/$SYBASE_ASE/bin/dataserver -sDBA_T1_ASE \
-d/dba/sybase/DBA_T1_ASE/master.dat \
-e/Software/sybase/dba/DBA_T1_ASE/log/DBA_T1_ASE.log \
-c/Software/sybase/dba/DBA_T1_ASE/cfg/DBA_T1_ASE.cfg \
-psa &
Lorsque l’option -psa est spécifié dans la ligne de commande de démarrage du
serveur Sybase ASE, le nouveau mot de passe sa est notifié à l’écran juste
après la mise en ligne de la base sybsystemprocs lors du redémarrage.
Attention, le nouveau mot de passe du compte sa est notifié uniquement à l’écran, il n’est pas écrit dans le fichier de log du serveur ASE.
00:00000:00001:2010/12/20 18:51:29.85 server The transaction log in the database 'sybsystemprocs'
will use I/O size of 4 Kb.
00:00000:00001:2010/12/20 18:51:29.86 server Database 'sybsystemprocs' is now online.
New SSO password for sa:mvfjgyzvvabbo1
Changement du mot de passe sa
Le serveur ASE DBA_T1_ASE est alors accessible avec isql et le mot de passe
du compte sa réinitialisé:
sybase@DBA_T1_ASE> isql -Usa -SDBA_T1_ASE -Pmvfjgyzvvabbo1
1>
Le mot de passe sa est aussitôt modifié avec sp_password :
exec sp_password 'mvfjgyzvvabbo1','<nouveau mot de passe>','sa' goPassword correctly set. (return status = 0)
Suppression de l’option -psa et redémarrage
Arrêter de nouveau le serveur ASE :
shutdown goASE shutdown by request. ueshutdown: exiting
Supprimer ensuite l’option -psa dans la ligne de commande lançant le binaire
dataserver et redémarrer le serveur ASE en mode normal.