Changement des mots de passe système pour Oracle

Fabien Celaia

Comment changer proprement un mot de passe d'un compte système d'Oracle ?

♪

- Titre : Changement des mots de passe système pour Oracle

- Auteur : Fabien Celaia

- Parution : 12 novembre 2006

- Mise à jour : 19 novembre 2006

- Licence : Copyright ® 2006 fadace. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Principe de base

- II. Streams

- III. Utilisateur dbsnmp

- III-A. Agent 9i

- III-B. Agent 10g

- IV. Utilisateur sysman

- IV-A. Agent 10gR1

- IV-B. Agent 10gR2

- V. Résolution de problèmes connus

I - Principe de base

Modifier un mot de passe chez Oracle ? Rien de plus simple… Il s'agit cependant de ne pas oublier l'impact que cela peut avoir sur les modules Oracle qui les utilisent et qui les stockent (bien entendu de façon cryptée) dans des fichiers.

Se connecter en tant que sys as sysdba :

alter user sys identified by NouveauMotDePasse ;
alter user system identified by NouveauMotDePasse ;
alter user dbsnmp identified by NouveauMotDePasse ;
alter user sysman identified by NouveauMotDePasse ;

Pour dbsnmp, ne pas utiliser 8 caractères pour le mot de passe ni des caractères autres qu’alphanumériques compte tenu d'un bug répertorié.

II - Streams

Cas particuliers pour la réplication si vous utilisez Streams, et plus particulièrement Downstreams (capture et apply du côté cible).

Dans ce cas précis, le mot de passe de SYS doit être obligatoirement strictement identique sur le serveur source et le serveur cible.

III - Utilisateur dbsnmp

III-A - Agent 9i

Dans le fichier ${ORACLE_HOME}/network/admin/snmp_rw.ora, ajouter la ligne suivante :

snmp.connect.{Nom global}.name=dbsnmp
snmp.connect.{Nom global}.password=NouveauMotDePasse

… puis redémarrer l'agent.

Source: Metalink Note 168697.1

III-B - Agent 10g

Connecté en tant qu'admin et en mode console, stopper la console via :

emctl stop dbconsole

Modifier le mot de passe en tant que sysdba :

alter user dbsnmp identified by NouveauMotDePasse

Éditer le fichier ${ORACLE_HOME}/`hostname`_${ORACLE_SID}/sysman/emd/targets.xml et modifier les lignes suivantes :

<Property NAME="UserName" VALUE="2ed7f792e30adc89" ENCRYPTED="TRUE"/>
<Property NAME="password" VALUE="c8d4082a472b36ae" ENCRYPTED="TRUE"/>

en

<Property NAME="UserName" VALUE="dbsnmp" ENCRYPTED="FALSE"/>
<Property NAME="password" VALUE="NouveauMotDePasse" ENCRYPTED="FALSE"/>

À noter que dans le cas d'une installation RAC, vous aurez chaque fois ces deux entrées en double. Une fois sous la rubrique :

<Target TYPE="oracle_database" NAME="Votre Global Name">

… et une fois sous la rubrique :

<Target TYPE="rac_database" NAME="Votre Global Name">

Redémarrer la console : ce redémarrage aura pour effet de crypter les valeurs précédemment en clair et de passer le flag ENCRYPTED à TRUE.

emctl start dbconsole

Pour déterminer si les nouveaux paramètres ont bien été pris en considération lors du redémarrage, et pour des raisons évidentes de sécurité, allez à nouveau éditer le fichier ${ORACLE_HOME}/`hostname`_${ORACLE_SID}/sysman/emd/targets.xml pour vérifier que tout mot de passe soit bien crypté.

Source : Metalink, note 259387.1

IV - Utilisateur sysman

IV-A - Agent 10gR1

Connecté en tant qu'admin et en mode console, stopper OMS via :

emctl stop oms

Modifier le mot de passe en tant que sysdba :

alter user sysman identified by NouveauMotDePasse

Éditer le fichier ${ORACLE_HOME}/sysman/config/emoms.properties et modifier les lignes suivantes :

oracle.sysman.eml.mntr.emdRepPwd=NouveauMotDePasse
oracle.sysman.eml.mntr.emdRepPwdEncryption=FALSE

Redémarrer OMS :

emctl start oms

S'assurer que oracle.sysman.eml.mntr.emdRepPwd est maintenant encrypté.

Source : Metalink, note 259379.1

IV-B - Agent 10gR2

Connecté en tant qu'Oracle sur la console console, stopper la console via :

emctl stop dbconsole

Dans le fichier ${ORACLE_HOME}/`hostname`_${ORACLE_SID}/sysman/config/emoms.properties, modifier les lignes en conséquence. Remplacez :

oracle.sysman.eml.mntr.emdRepUser=SYSMAN
oracle.sysman.eml.mntr.emdRepPwd=d0355495a68cd5ae
oracle.sysman.eml.mntr.emdRepPwdEncrypted=TRUE

par :

oracle.sysman.eml.mntr.emdRepUser=SYSMAN
oracle.sysman.eml.mntr.emdRepPwd=NouveauMotDePasse
oracle.sysman.eml.mntr.emdRepPwdEncrypted=FALSE

Redémarrer la console via :

emctl start dbconsole

En rééditant le fichier ${ORACLE_HOME}/`hostname`_${ORACLE_SID}/sysman/config/emoms.properties, s'assurer que le mot de passe sous oracle.sysman.eml.mntr.emdRepPwd soit crypté et que le flag oracle.sysman.eml.mntr.emdRepPwdEncrypted soit sur TRUE.

V - Résolution de problèmes connus

Si vous avez effectué vos changements de mot de passe avant l'arrêt de la console, celle-ci peut avoir passé vos comptes - LOCKED(TIMED). Assurez-vous donc que les comptes SYSMAN et DBSNMP soient bien déverrouillés lorsque vous lancez votre console.