Analista de Sistemas - Subárea Administração de Banco de Dados
Um estagiário de DBA recebe a tarefa de criar um usuário chamado user_ro cuja única função será executar consultas SELECT em algumas views predefinidas. Seguindo o princípio do menor privilégio, qual comando SQL o estagiário deve usar após criar o usuário para conceder a ele estritamente a capacidade de conectar-se ao banco e executar consultas?
AGRANT CREATE SESSION TO user_ro;
BALTER USER user_ro ENABLE SESSION;
CEXEC dbms_session.enable(‘user_ro');
DINSERT INTO system_users VALUES ('user_ro', 'SELECT');
ECOMMENT ON USER user_ro IS 'Somente leitura';
Revelar gabarito e comentário▾
GabaritoA — GRANT CREATE SESSION TO user_ro;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Concessão de Privilégios no Oracle
Gabarito: letra A. O comando GRANT CREATE SESSION TO user_ro; é a forma correta de conceder ao usuário o privilégio de sistema para se conectar ao banco de dados (criar sessão). Esse é o principal comando DCL para habilitar a conexão, seguindo o princípio do menor privilégio. Embora para executar consultas SELECT seja necessário também conceder o privilégio SELECT nas views predefinidas, a questão foca na capacidade de conexão e interpreta que o GRANT CREATE SESSION é o comando imediato e essencial para permitir que o usuário se conecte e, posteriormente, execute consultas autorizadas.
A banca testa o conhecimento dos comandos DCL específicos do Oracle (ou SGBD similar), distinguindo a sintaxe correta de alternativas inválidas ou que não cumprem o objetivo.
1Criar usuário
2GRANT CREATE SESSION
3GRANT SELECT nas views
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
GRANT CREATE SESSION TO user_ro; é um comando DCL padrão no Oracle que concede ao usuário o privilégio de sistema CREATE SESSION, permitindo-lhe estabelecer uma sessão (conectar-se ao banco). Este é o privilégio mínimo necessário para conexão.
Alternativa B — ❌ Incorreta
ALTER USER user_ro ENABLE SESSION; não é uma sintaxe válida no Oracle. O comando ALTER USER é usado para alterar propriedades como senha, conta bloqueada, etc., mas não existe a cláusula ENABLE SESSION.
Alternativa C — ❌ Incorreta
EXEC dbms_session.enable('user_ro'); é uma chamada a uma procedure PL/SQL, não um comando DCL. Não concede privilégio de conexão; além disso, dbms_session.enable não é uma função padrão para esse fim.
Alternativa D — ❌ Incorreta
INSERT INTO system_users VALUES ('user_ro', 'SELECT'); tenta inserir manualmente em uma tabela de sistema, o que não é a forma correta de conceder privilégios. Em um SGBD relacional, a concessão deve ser feita via comandos GRANT, não com DML em tabelas internas.
Alternativa E — ❌ Incorreta
COMMENT ON USER user_ro IS 'Somente leitura'; adiciona um comentário ao usuário, mas não concede qualquer privilégio. É um comando DDL que não afeta permissões.
NÃO CAIA NESSA!
A banca inclui comandos que parecem razoáveis, mas não existem ou não são apropriados para concessão de privilégios. O candidato pode ser tentado pelas alternativas B ou D, que sugerem ativar a sessão ou inserir em tabela de sistema, mas a única forma correta e padrão é o GRANT CREATE SESSION.