SQL> exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'SQLTERMINATOR', true);
PL/SQL procedure successfully completed.
SQL> SET PAGESIZE 0
SQL> SET LONG 90000
SQL> SELECT DBMS_METADATA.GET_DDL('ROLE', role) || ';' FROM dba_roles WHERE ROLE='MYROLE';
CREATE ROLE "MYROLE";
;
SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT',role) FROM ROLE_ROLE_PRIVS
WHERE ROLE='MYROLE' group by ROLE;
GRANT "CONNECT" TO "MYROLE";
GRANT "EXP_FULL_DATABASE" TO "MYROLE";
SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT',role) FROM ROLE_SYS_PRIVS
WHERE ROLE='MYROLE' group by ROLE;
no rows selected
SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT',role) FROM ROLE_TAB_PRIVS
WHERE ROLE='MYROLE' group by ROLE;
no rows selected
Como puedes ver, hay un ; extra después de la sentencia CREATE ROLE que puedes ignorar sin problemas, y para este rol no hay derechos sobre el sistema u objetos.
Más información:
Oracle Roles
57 DBMS_METADATA
No hay comentarios.:
Publicar un comentario