Pular para o conteúdo principal

Questão de Banco de Dados — Oracle — FGV 2024

Banco de DadosOracle
Código
fg165209
Banca
FGV
Órgão
TJ AP
Ano
2024
Cargo
AJ ( )
No contexto de administração de conexões no Oracle, Database Link é um objeto do esquema que permite que usuários acessem objetos em bancos de dados diferentes.   Observe o seguinte script:   ---conexão no banco de dados staging CONNECT staging@staging CREATE PUBLIC DATABASE LINK "PRD_PROCESSO"  CONNECT TO staging  IDENTIFIED BY <PWD>  USING 'PRD_PROCESSO'; SELECT nome FROM processo.tbl_usuario@prd_processo WHERE cpf = 99988877766;   Após a execução do script acima, a instrução SELECT:
  1. Aretornará o nome do usuário com o CPF 99988877766 da tabela “tbl_usuario” do banco de dados “prd_processo”;
  2. Bretornará o nome do usuário com o CPF 99988877766 da tabela “tbl_usuario” do banco de dados “prd_processo”, se o usuário “processo” existir no banco de dados “staging”;
  3. Cretornará o nome do usuário com o CPF 99988877766 da tabela “tbl_usuario” do banco de dados “prd_processo”, se existir sinônimo público para a tabela “tbl_usuario” no banco de dados “prd_processo”;
  4. Dnão retornará o nome do usuário com o CPF 99988877766 da tabela “tbl_usuario” do banco de dados “prd_processo”, porque o Database Link deve ser criado no banco de dados remoto especificado em USING 'PRD_PROCESSO';
  5. Enão retornará o nome do usuário com o CPF 99988877766 da tabela “tbl_usuario” do banco de dados “prd_processo”, porque a instrução deve ser executada com o usuário “staging” na cláusula FROM staging.tbl_usuario@prd_processo.
Revelar gabarito e comentário

GabaritoA — retornará o nome do usuário com o CPF 99988877766 da tabela “tbl_usuario” do banco de dados “prd_processo”;

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”.

Database Link no Oracle

Gabarito: letra A. O script cria um Database Link público chamado "PRD_PROCESSO" no banco de dados staging, conectando-se ao banco remoto PRD_PROCESSO com o usuário staging. A instrução SELECT acessa a tabela tbl_usuario do esquema processo no banco remoto, filtrando pelo CPF informado. Como o link foi criado corretamente e a sintaxe da consulta está adequada, o comando retornará o nome do usuário com o CPF 99988877766 da tabela tbl_usuario do banco de dados prd_processo.

Um Database Link no Oracle é um objeto de esquema que permite o acesso a objetos (tabelas, views, etc.) em um banco de dados remoto. Ele funciona como uma "ponte" entre o banco local e o banco remoto, permitindo que consultas e comandos sejam executados como se os objetos remotos estivessem no banco local. A criação de um Database Link envolve especificar o nome do link, o usuário e a senha para conexão no banco remoto, e a string de conexão (USING) que identifica o banco remoto.

No script apresentado, o comando CREATE PUBLIC DATABASE LINK "PRD_PROCESSO" cria um link público, ou seja, acessível a todos os usuários do banco staging. A cláusula CONNECT TO staging IDENTIFIED BY <PWD> define as credenciais que serão usadas para conectar ao banco remoto. A cláusula USING 'PRD_PROCESSO' especifica a string de conexão que identifica o banco remoto, que pode ser um nome de serviço, um alias de TNS, ou uma string de conexão completa.

A instrução SELECT nome FROM processo.tbl_usuario@prd_processo WHERE cpf = 99988877766; utiliza o Database Link para acessar a tabela tbl_usuario no esquema processo do banco remoto. A sintaxe tabela@database_link é a forma correta de referenciar um objeto remoto através de um Database Link. O Oracle irá conectar ao banco remoto usando as credenciais especificadas no link e executará a consulta na tabela remota.

A alternativa A está correta porque o script está correto e a consulta retornará o nome do usuário com o CPF especificado, desde que exista um registro com esse CPF na tabela remota. As demais alternativas apresentam condições ou erros que não se aplicam ao script apresentado.

  1. 1Criar link no banco local
  2. 2CONNECT TO (credenciais remotas)
  3. 3USING (string de conexão)
  4. 4SELECT tabela@link
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

A alternativa A está correta porque o script está correto e a consulta retornará o nome do usuário com o CPF 99988877766 da tabela tbl_usuario do banco de dados prd_processo. O Database Link foi criado corretamente, a sintaxe da consulta está adequada e não há nenhum impedimento para a execução da instrução.

Alternativa B — ❌ Incorreta

A alternativa B está incorreta porque a condição "se o usuário 'processo' existir no banco de dados 'staging'" não é necessária para o funcionamento do Database Link. O usuário processo é o esquema da tabela no banco remoto, não um usuário do banco local. O Database Link conecta ao banco remoto com as credenciais especificadas no link (staging), e o esquema processo é apenas o proprietário da tabela no banco remoto. A existência do usuário processo no banco staging não é relevante para a consulta.

Alternativa C — ❌ Incorreta

A alternativa C está incorreta porque a existência de um sinônimo público para a tabela tbl_usuario no banco de dados prd_processo não é necessária para o funcionamento do Database Link. O Database Link permite o acesso direto à tabela remota usando a sintaxe tabela@database_link, sem a necessidade de sinônimos. Sinônimos são objetos que fornecem um nome alternativo para um objeto, mas não são obrigatórios para o acesso via Database Link.

Alternativa D — ❌ Incorreta

A alternativa D está incorreta porque o Database Link não deve ser criado no banco de dados remoto especificado em USING 'PRD_PROCESSO'. O Database Link é criado no banco de dados local (no caso, staging) e aponta para o banco remoto. A cláusula USING especifica a string de conexão para o banco remoto, mas o link em si é um objeto do banco local. Portanto, a afirmação de que o link deve ser criado no banco remoto é falsa.

Alternativa E — ❌ Incorreta

A alternativa E está incorreta porque a instrução não deve ser executada com o usuário staging na cláusula FROM staging.tbl_usuario@prd_processo. A sintaxe correta para acessar uma tabela remota via Database Link é esquema.tabela@database_link, onde esquema é o proprietário da tabela no banco remoto e database_link é o nome do link. No script, processo.tbl_usuario@prd_processo está correto, pois processo é o esquema da tabela no banco remoto e prd_processo é o nome do link. A alternativa sugere usar staging como esquema, o que está incorreto, pois staging é o usuário que criou o link, não o esquema da tabela remota.

Gabarito: letra A

Link permanente: /questoes/fg165209