Pessoal, eu estou precisando de uma query (ou procedure) que liste, por exemplo, todos os usuários que possuem privilégio "CREATE SESSION". Eu usei algumas (que coloco abaixo), mas nenhuma delas listam todos os usuários. Ainda não resolvi o problema quando o privilégio é dado a uma role, essa role para outra role, e essa role para um usuário. Alguém conhece uma query ou procedure que rode em Oracle 8, 9 e 10 e me traga isso? - Quais os usuários que possuem privilégio de "CREATE SESSION" (ou DROP, ALTER SESSION, etc...) - Quais os usuários que possuem a role DBA (ou DELETE_CATALOG_ROLE, etc...)
Essa query só funciona no 9i, e para role parece que traz tudo: SELECT grantee, granted_role FROM dba_role_privs START WITH granted_role='DBA' CONNECT BY PRIOR grantee = granted_role; Essa outra funciona no 8, 9 e 10, mas só verifica dois níveis: SELECT a.grantee, a.granted_role FROM dba_role_privs a, dba_role_privs b WHERE a.granted_role = b.grantee AND b.granted_role='DBA' UNION SELECT grantee, granted_role FROM dba_role_privs WHERE granted_role='DBA' ORDER BY 2; Essa funciona em todas as versões, mas também não varre todos os níveis: select rp.GRANTEE,GRANTED_ROLE,rp.ADMIN_OPTION,DEFAULT_ROLE,PRIVILEGE from dba_role_privs rp, dba_sys_privs sp where rp.GRANTEE = sp.GRANTEE and rp.GRANTEE not in ('SYS','SYSTEM', 'DBA') and privilege = 'CREATE SESSION' order by rp.GRANTEE, GRANTED_ROLE, PRIVILEGE; Alguém pode me ajudar? -- Thiago Delfim Oracle & SQL Server Database Administrator Oracle 9i Database Certified Associate IBM IT Delivery [EMAIL PROTECTED] (MSN) Campinas/SP (19) 9111-1439 [As partes desta mensagem que não continham texto foram removidas]