Eu tenho um usuário que pode descartar, alterar, criar tabelas e índices. Mas quando listo os privilégios para meu usuário Oracle, ele não mostra nenhum CREATE TABLE
ou outro desses privilégios. Como posso fazer essas operações sem os privilégios ou por que o Oracle não as mostra?
A execução das seguintes consultas não retorna nada:
SELECT * FROM USER_TAB_PRIVS;
SELECT * FROM all_tab_privs_recd WHERE grantee = 'user_kshitiz';
SELECT * FROM USER_SYS_PRIVS
Retornos em execução :
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
user_kshitiz UNLIMITED TABLESPACE NO
user_kshitiz CREATE SEQUENCE NO
SELECT * FROM USER_ROLE_PRIVS
Retornos em execução :
USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
user_kshitiz CONNECT NO YES NO
user_kshitiz RESOURCE NO YES NO
user_kshitiz SCHEMA_1_RW_ROLE NO YES NO
A verificação de privilégios em cada uma dessas funções não retorna nada.
SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE = 'CONNECT';
SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE = 'RESOURCE';
SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE = 'SCHEMA_1_RW_ROLE';
Então, de onde vem o poder?
Como você pode ver, você tem uma
RESOURCE
função concedida ao usuáriouser_kshitz
. E você tem que consultar o arquivoROLE_SYS_PRIVS
.Além disso, você pode consultar o
SESSION_PRIVS
para localizar todos os privilégios concedidos ao usuário.