08 Nov 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.
Juan Miranda
Posted at 16:49h, 01 AprilHola
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 AprilHola 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.