Malheureusement, Oracle ne permet pas:
ALTER USER SYSMAN IDENTIFIED BY VALUES (SELECT password FROM sys.user$ WHERE name='SYSMAN')
donc votre seul choix semblerait être PL/SQL. Vous pouvez probablement mettre cela dans une procédure, puis l'appeler (je suppose avec des paramètres pour la source & utilisateurs de destination).
Voici comment le faire dans une procédure stockée:
CREATE OR REPLACE PROCEDURE move_password (
source_user IN varchar2,
dest_user IN varchar2
)
IS
pass varchar(30);
BEGIN
select password into pass from sys.user$ where name=source_user;
execute immediate 'alter user '||dest_user||' identified by values ''' || pass || '''';
END;
Bien que, quand je le tester, le déplacement passe entre les utilisateurs comme cela ne fonctionne pas vraiment. Au moins en 10g. N'a pas testé 11. Apparemment, dans 10g, le hash de mot de passe inclut le nom d'utilisateur (11 est différent, cela peut fonctionner). Il y a quelques third-party documentation of the password algorithm.
Bien sûr, étant donné que cela inclut SQL dynamique, vous devez vous méfier de la citation, qui n'est pas traitée dans ce qui précède. On suppose que seul sysdba sera autorisé à appeler cette procédure, donc ...
merci pour l'info. Cela vous dérange-t-il de fournir la procédure PL/SQL? –
@QiangLi: J'ai mis à jour ma réponse avec une procédure stockée pour le faire. – derobert