En tant qu'administrateur de la base de données, nous devons parfois utiliser le compte d'un autre utilisateur sans changer de mot de passe.
Voici une méthode permettant de prendre provisoirement la place d'un utilisateur sans connaitre son mot de passe :

  • jusqu'en 10g

-- connexion à la base de données en tant que DBA
sqlplus "/ as sysdba"

-- effectuer un export des informations de l'utilisateur
spool d:\user.sql
select 'alter user '|| username ||' identified by values '''||password||''';' from dba_users where username='';
spool off


-- résultat de la commande:
SQL> select 'alter user '|| username ||' identified by values '''||password||''';' from dba_users where username='';

'ALTERUSER'||USERNAME||'IDENTIFIEDBYVALUES'''||PASSWORD||''';'                 
--------------------------------------------------------------------------------
alter user identified by values '4DA5D82665F1407B';

SQL> spool off

-- Changer le mot de passe du user
alter user identified by initial;

-- Se connecter en tant que user
connect /initial

-- après avoir effectuer les opérations, executer l'ordre sql contenu dans le fichier spool user.sql
alter user identified by values '4DA5D82665F1407B';

  • en 11g

En 11g, le hash code du mot de passe n'est plus accessible via dba_users, il faut se connecter en tant que SYS et interroger user$ :

SELECT password FROM SYS.USER$ WHERE username='SCOTT';

Et pour modifier le mot de passe du user SCOTT

alter user SCOTT identified by '4DA5D82665F1407B';