lundi 27 novembre 2017

SCRIPT pour retrouver les infos d'un user : mot de passe et droit

set echo off;
set feedback off;
set heading off;
set verify off;
set linesize 1000
set pagesize 0
set long 20000
set longchunksize 20000
set autoprint on
variable x clob

execute dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'SQLTERMINATOR', true);
execute  dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'PRETTY', true);

SELECT DBMS_METADATA.GET_DDL('USER','${_USERNAME}') FROM dual;

declare
no_grant exception;
pragma exception_init( no_grant, -31608 );
begin
:x := dbms_metadata.get_granted_ddl( 'ROLE_GRANT','${_USERNAME}') || ';';
exception
when no_grant then :x := '-- no role grants';
end;
/

declare
no_grant exception;
pragma exception_init( no_grant, -31608 );
begin
:x := dbms_metadata.get_granted_ddl( 'DEFAULT_ROLE','${_USERNAME}');
exception
when no_grant then :x := '-- no default role';
end;
/

declare
no_grant exception;
pragma exception_init( no_grant, -31608 );
begin
:x := dbms_metadata.get_granted_ddl( 'SYSTEM_GRANT','${_USERNAME}');
exception
when no_grant then :x := '-- no system grants';
end;
/

declare
no_grant exception;
pragma exception_init( no_grant, -31608 );
begin
:x := dbms_metadata.get_granted_ddl( 'OBJECT_GRANT','${_USERNAME}');
exception
when no_grant then :x := '-- no object grants';
end;
/

declare
no_grant exception;
pragma exception_init( no_grant, -31608 );
begin
:x := dbms_metadata.get_granted_ddl( 'TABLESPACE_QUOTA','${_USERNAME}');
exception
when no_grant then :x := '-- no tablespace quota';
end;
/

exit