Script para Extraer la Definicion de un Usuario y Mas!!!

Script para Extraer la Definicion de un Usuario y Mas!!!

Cuantas veces no te han pedido que extraigas la definicion de un usuario para luego crearlo en otra instancia o recrearlo en la mismas despues de varias tareas administrativas. Al principio lo que hacia era ir al diccionario de datos en donde veia como estaba definido el usuario, y luego a cada uno de las tablas que contenian los privlegios del usuario, de ahi le tenia que dar el formato adecuado para poder ejecutarlo.
Despues de un buen rato de hacerlo de esta manera, voilà, llegue a descubrir el paquete de DBMS_METADATA, este paquete lo que nos extraer , como dice su nombre, la definicion de objetos.

Con el siguiente script podras obtener la definicion de un usuario y sus privilegios

column metadata format a200 WORD_WRAPPED
set long 10000000
execute dbms_metadata.set_transform_param (DBMS_METADATA.SESSION_TRANSFORM,’SQLTERMINATOR’,TRUE);

select dbms_metadata.get_ddl (‘USER’, username) metadata
from dba_users
where username in (‘&&USERNAME’);


select dbms_metadata.get_granted_ddl (‘DEFAULT_ROLE’, grantee) metadata
from (select distinct grantee
from dba_role_privs
where default_role = ‘YES’
intersect
select username
from dba_users
where username in (‘&&USERNAME’));

select dbms_metadata.get_granted_ddl (‘ROLE_GRANT’, grantee) metadata
from (select distinct grantee
from dba_role_privs
intersect
select username
from dba_users
where username in (‘&&USERNAME’));

select dbms_metadata.get_granted_ddl (‘SYSTEM_GRANT’, grantee) metadata
from (select distinct grantee
from dba_sys_privs
intersect
select username
from dba_users
where username in (‘&&USERNAME’));

select dbms_metadata.get_granted_ddl (‘OBJECT_GRANT’, grantee, ‘COMPATIBLE’,’ORACLE’,’DDL’,100000) metadata
from (select distinct grantee
from dba_tab_privs
intersect
select username
from dba_users
where username in (‘&&USERNAME’));

Conclusion
No solo este paquete te sirve para un usuario, te sirve tambien para extraer definicion de cualquier objeto de nuestra base de datos, una vez que te sientas agusto con este paquete, vas a ver el gran beneficio que tiene.

Rene Antunez
[email protected]
2 Comments
  • Juan Miranda
    Posted at 16:49h, 01 April

    Hola
    Te animo a probar http://www.ddlwizard.com/
    Es una fantástica herramienta gratuita que extrae todo el DDL de una base de datos a partir de un export sin filas (rows=n).
    Yo la utilizo para todas mis migraciones y nunca me ha fallado.
    Juan.

  • René
    Posted at 07:33h, 05 April

    Hola Juan, creo que cualquier herramienta que te ayude a hacer mejor tu trabajo es buena, en este caso tambien creo que es bueno saber que hacer cuando no tienes estas a la mano.