2010-03-10 11 views
7

que tienen un papel de cosecha propia de Oracle que se creó hace mucho tiempo:¿Cómo puedo enumerar la lista de privilegios otorgados a una función de Oracle?

create role MyRole; 

Se ha concedido la capacidad de seleccionar, insertar, actualizar y eliminar algunas de las tablas y vistas.

grant select on sometable to MyRole; 
grant insert on sometable to MyRole; 
grant select on someothertable to MyRole; 
-- etc. 

¿Cómo puedo ahora enumerar la lista específica de privilegios que se otorgaron a la función? Estoy interesado en descubrir las tablas específicas y los derechos que este rol tiene con respecto a cada tabla. ¿Cómo puedo recuperar esta información?

Respuesta

8

Puede simplemente buscar desde el diccionario de datos ROLE_TAB_PRIVS. Y haga esto

SELECCIONE * FROM ROLE_TAB_PRIVS WHERE ROLE = 'MyRole';

3

esto funciona así:

SELECT DBA_TAB_PRIVS.GRANTEE, TABLE_NAME, PRIVILEGE,DBA_ROLE_PRIVS.GRANTEE 
FROM DBA_TAB_PRIVS, DBA_ROLE_PRIVS 
WHERE DBA_TAB_PRIVS.GRANTEE = DBA_ROLE_PRIVS.GRANTED_ROLE 
AND DBA_TAB_PRIVS.GRANTEE='<ENTER GROUP ROLE HERE>' 
AND DBA_ROLE_PRIVS.GRANTEE = '<ENTER ROLE HERE>' 
ORDER BY DBA_ROLE_PRIVS.GRANTEE 
Cuestiones relacionadas