su.sql changer l’utilisateur ou le compte propriétaire oracle

scripts et trucs Ajouter un commentaire

Il est possible de faire l’équivallent d’un ’su’ Unix, sous Oracle, pour changer l’utilisateur courant.

C’est très pratique et s’appuie sur une fonctionnalité peu documentée : le ALTER USER … IDENTIFIFIED BY VALUES.

Voici le script (je n’en suis pas l’auteur) :

set head off termout off
set verify off
col nl newline
spool /tmp/sud.tmp
column EXTERNE new_value NEXTERNE noprint
select decode (password,’EXTERNAL’,'oui’,'non’) EXTERNE
from dba_users where username=upper(’&&1′)
/
select ‘alter user &&1 identified by &&1;’ nl,
‘grant alter user to &&1;’ nl
from dual
/
select
‘connect &&1/&&1.@’||rpad(global_name,5) nl,
‘alter user &&1 identified’||
decode(’&NEXTERNE’,'oui’,’ EXTERNALLY;’,
‘ by values ”’||u.password||”’;') nl
from sys.dba_users u, global_name
where u.username = upper(’&&1′)
and u.username <> user
/
spool off
@/tmp/sud.tmp
set termout on
select ‘Connected as ‘||USER||’ on ‘||global_name||’.’
from global_name;
–!rm /tmp/su.tmp
set termout on head on

Seule petite particularité : quand le compte est en authentification externe ( IDENTIFIED EXTERNALLY) …ca marche aussi.

Faire un commentaire