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
:
exec sp_password 'mvfjgyzvvabbo1','<nouveau mot de passe>','sa' go
Password correctly set. (return status = 0)
Suppression de l’option -psa et redémarrage
Arrêter de nouveau le serveur ASE :
shutdown 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.