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


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

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

3- 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@DBA_T1_ASE> vi $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

4- 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> sp_password 'mvfjgyzvvabbo1','<nouveau mot de passe>','sa'
2> go

Password correctly set.
(return status = 0)

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


Annexe

Historique

Version Date Commentaires
1.0 12/2010 Version initiale

Liens

Adaptive Server Enterprise 15.0.2 - Utility Guide : startserver et runfiles
Adaptive Server Enterprise 15.0.2 - BOL : sp_password