Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FUNDATEC 2025

Banco de DadosSQL
Código
qg468579
Banca
FUNDATEC
Órgão
BRDE
Ano
2025
Nível
Superior
Cargo
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?
  1. AGRANT CREATE SESSION TO user_ro;
  2. BALTER USER user_ro ENABLE SESSION;
  3. CEXEC dbms_session.enable(‘user_ro');
  4. DINSERT INTO system_users VALUES ('user_ro', 'SELECT');
  5. 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.

  1. 1Criar usuário
  2. 2GRANT CREATE SESSION
  3. 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.

Gabarito: letra A.

Link permanente: /questoes/qg468579