Obtener ddl de permisos

Otra función interesante del paquete DBMS_METADATA es get_Granted_DDL. Tal como su nombre sugiere, te devuelve el código ddl de los permisos que tenga el usuario que le pasas como parámetro. En este caso le pasaríamos dos parámetros, el primero de los cuales es el tipo(a elegir entre AUDIT, DEFAULT_ROLE, OBJECT_GRANT, PROXY, ROLE_GRANT, SYSTEM_GRANT y TABLESPACE_QUOTA), el segundo es el usuario. Los otros parámetros pueden tomar los valores por defecto. Por ejemplo, la siguiente select nos daría el ddl de creación de permisos de sistema para el viejo Scott

SET LONG 5000
SELECT DBMS_METADATA.GET_GRANTED_DDL( 'SYSTEM_GRANT', 'SCOTT' )
FROM   DUAL
/

Esta nos daría la de los objetos a los que tiene privilegios directamente, sin pasar por un rol:

SET LONG 5000
SELECT DBMS_METADATA.GET_GRANTED_DDL( 'OBJECT_GRANT', USER ) AS CPRIVILEGIO
FROM   DUAL
/

Para los otros posibles valores para el tipo, no he conseguido hacerlo funcionar. No sé si es que me faltan privilegios o que estoy haciendo algo mal (o las dos cosas a la vez).

Anuncios