SELECT * FROM ROLE_SYS_PRIVS
SELECT * FROM DBA_ROLE_PRIVS;
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE IN ('','','','','','');
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE IN ('','','','','','');
-- REVOKE ALL
select 'REVOKE ' || GRANTED_ROLE || ' FROM ' || GRANTEE || ';' from dba_role_privs where grantee='SCHEMA';
select 'REVOKE ' || PRIVILEGE || ' FROM ' || GRANTEE || ';' from dba_sys_privs where grantee='SCHEMA';
--Cruzar DBA_ROLE_PRIVS com DBA_TAB_PRIVS
--Se você deseja verificar quais permissões de tabelas os usuários têm, considerando os papéis (roles) atribuídos a eles
SELECT rp.GRANTEE, rp.GRANTED_ROLE, tp.TABLE_NAME, tp.PRIVILEGE
FROM DBA_ROLE_PRIVS rp
JOIN DBA_TAB_PRIVS tp
ON rp.GRANTEE = tp.GRANTEE
WHERE rp.GRANTED_ROLE = 'DBA';
--Cruzar DBA_ROLE_PRIVS com DBA_SYS_PRIVS
--verificar quais privilégios de sistema os usuários têm com base nos papéis que receberam
SELECT rp.GRANTEE, rp.GRANTED_ROLE, sp.PRIVILEGE
FROM DBA_ROLE_PRIVS rp
JOIN DBA_SYS_PRIVS sp
ON rp.GRANTEE = sp.GRANTEE
WHERE rp.GRANTED_ROLE = 'DBA';
--Todos os privilégios combinados: DBA_ROLE_PRIVS, DBA_TAB_PRIVS, DBA_SYS_PRIVS e DBA_COL_PRIVS:
--visão geral de todos os privilégios, incluindo papéis e permissões específicas em objetos de banco de dados
SELECT rp.GRANTEE,
rp.GRANTED_ROLE,
tp.TABLE_NAME, tp.PRIVILEGE AS TABLE_PRIVILEGE,
cp.COLUMN_NAME, cp.PRIVILEGE AS COLUMN_PRIVILEGE,
sp.PRIVILEGE AS SYS_PRIVILEGE
FROM DBA_ROLE_PRIVS rp
LEFT JOIN DBA_TAB_PRIVS tp ON rp.GRANTEE = tp.GRANTEE
LEFT JOIN DBA_COL_PRIVS cp ON rp.GRANTEE = cp.GRANTEE
LEFT JOIN DBA_SYS_PRIVS sp ON rp.GRANTEE = sp.GRANTEE
WHERE rp.GRANTED_ROLE = 'DBA';