Questão de Banco de Dados — SQL — Quadrix 2024
- Código
- qg354481
- Banca
- Quadrix
- Órgão
- NOVACAP
- Ano
- 2024
- Nível
- Superior
- Cargo
- Analista de Sistemas - Infraestrutura
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). O parâmetro DIRECT do utilitário SQL*Loader do Oracle não especifica o nome do arquivo de dados a importar; ele ativa o modo de carga direta (direct path load), que insere dados diretamente nos arquivos de dados do banco, ignorando a SGA e o SQL convencional. O nome do arquivo de dados é informado pelo parâmetro INFILE. A afirmativa troca a função de dois parâmetros distintos do utilitário.
O SQL*Loader é uma ferramenta do Oracle utilizada para carregar dados de arquivos externos (como arquivos .csv ou .txt) para tabelas do banco. Ele é controlado por um arquivo de controle (.ctl), que descreve o formato dos dados e as regras de carregamento. Dentro desse arquivo, vários parâmetros podem ser definidos, e cada um tem uma função específica.
O parâmetro INFILE é o que especifica o nome do arquivo que contém os dados a serem importados. Por exemplo, em um arquivo de controle, a linha INFILE 'dados.csv' indica que o SQLLoader deve ler os dados do arquivo dados.csv. Já o parâmetro DIRECT é uma opção que, quando definida como TRUE, faz com que o SQLLoader utilize o direct path load. Nesse modo, os dados são gravados diretamente nos arquivos de dados do banco, sem passar pela buffer cache (SGA) e sem gerar redo log (em certas condições), o que torna o carregamento muito mais rápido, mas com algumas restrições (por exemplo, não pode ser usado em tabelas com determinados tipos de restrições ou triggers).
A confusão entre DIRECT e INFILE é uma pegadinha clássica em provas de banco de dados. O candidato que conhece o SQL*Loader superficialmente pode lembrar que DIRECT é um parâmetro importante, mas não recordar exatamente qual é a sua função, e acabar associando-o ao arquivo de dados. No entanto, a função de indicar o arquivo de dados é exclusiva do INFILE.
Para fixar: o SQL*Loader possui vários parâmetros, e os mais cobrados são:
Parâmetro | Função |
|---|---|
| Especifica o arquivo de dados de origem |
| Ativa o modo de carga direta (direct path) |
| Arquivo onde são gravados os registros rejeitados |
| Arquivo onde são gravados os registros descartados |
| Arquivo de log do carregamento |
| Número de registros a pular no início do arquivo |
| Número de registros a processar antes de um commit (no modo convencional) |
A banca explora exatamente essa troca de funções: ela apresenta DIRECT como se fosse o parâmetro que indica o arquivo de dados, quando na verdade é INFILE. Essa é uma pegadinha de troca de termo, muito comum em questões de ferramentas de banco de dados.
A afirmativa está errada porque atribui ao parâmetro DIRECT uma função que pertence ao parâmetro INFILE. O DIRECT é um modificador de modo de carga, não um especificador de arquivo. Portanto, a associação feita no enunciado é incorreta.
A banca troca a função do parâmetro DIRECT pela do INFILE. O candidato que sabe que DIRECT é um parâmetro do SQL*Loader, mas não lembra exatamente para que serve, pode cair na armadilha. Lembre-se: DIRECT = modo de carga direta; INFILE = arquivo de dados. Com treino, você enxerga essas trocas de longe 💪.
Gabarito: letra E (ERRADO).
Link permanente: /questoes/qg354481