Perte du mot de passe sa d'un serveur Sybase Adaptive Server Enterprise

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 7244
sybase  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 :

1> exec sp_password 'mvfjgyzvvabbo1','<nouveau mot de passe>','sa'
2> go
Password correctly set.
(return status = 0)

Suppression de l'option -psa et redémarrage

Arrêter de nouveau le serveur ASE :

1> shutdown
2> go

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