Questão 24 - HCPA 2009/3 - ANALISTA DE SISTEMAS I (ADMINISTRADOR DE BANCO DE DADOS)

questão 24 consulta oracle DB_LINKs

Veja abaixo a resposta correta da questão e uma breve análise sobre o conteúdo.

Com base em seus conhecimentos em ORACLE8i SQL Reference e sabendo que a “USER_TAB_COLUMNS” é uma tabela do dicionário de dados que traz as informações de todas as tabelas do usuário conectado, analise o comando abaixo. 

SQL> GET QUERY1.SQL 

01 SELECT TB1.TABLE_NAME, TB1.COLUMN_ID, TB1.COLUMN_NAME, TB1.DATA_TYPE, 

02 TB1.DATA_PRECISION, TB1.DATA_LENGTH, TB1.DATA_SCALE 

03 FROM USER_TAB_COLUMNS@SECU TB1, 

04 USER_TAB_COLUMNS TB2 

05 WHERE TB1.TABLE_NAME = 'TAB_DEPTOS' 

06 AND TB1.TABLE_NAME = TB2.TABLE_NAME 

07 AND TB1.COLUMN_NAME = TB2.COLUMN_NAME 

08 AND ( TB1.DATA_TYPE <> TB2.DATA_TYPE OR 

09 TB1.DATA_PRECISION <> TB2.DATA_PRECISION OR 

10 TB1.DATA_SCALE <> TB2.DATA_SCALE OR 

11 TB1.DATA_LENGTH <> TB2.DATA_LENGTH )

12* ORDER BY 2 

SQL> / 

SQL> DESC TAB_DEPTOS 

TABLE_NAME COLUMN_ID COLUMN_NAME DATA_TYPE DATA_PRECISION DATA_LENGTH DATA_SCALE 

---------------- --------------- ------------------- -------------- ---------------------- ------------------ ---------------- 

TAB_DEPTOS 2 DESCRICAO VARCHAR2 100 

Onde, SECU é um nome de DB_LINK (no banco de “INSTANCE NAME” = PRIM) com USERNAME diferente do 

USERNAME ao qual se executam os comandos acima na instance name = PRIM (suponha que as tabelas 

USER_TAB_COLUNS possuem apenas os campos definidos no SELECT). 

Após a análise do comando e do resultado obtido, é correto afirmar que 

(A) esse comando faz JOIN com duas tabelas localizadas em bancos de dados diferentes e que o 

USER_TAB_COLUMNS@SECU referencia a estrutura do username definido no DB_LINK SECU. 

(B) se alterássemos a cláusula “FROM USER_TAB_COLUMNS@SECU“ (linha 3) substituindo-a por “FROM 

USER_TAB_COLUMNS”, o resultado não se modificaria. 

(C) esse comando compara os campos de duas tabelas diferentes, e verificou-se que havia somente um campo diferente 

para a tabela de nome “TAB_DEPTOS”. 

(D) o resultado obtido não possibilita afirmar que só exista este único campo “DESCRICAO” diferente entre as 

TABELAS “TAB_DEPTOS” da INSTANCE PRIM e da “TAB_DEPTOS” apontadas pelo DB_LINK SECU. 

(E) a cláusula “ORDER BY 2” (linha 12) não é válida, visto que há duas tabelas diferentes que possuem os mesmos 

campos. Diante disso, dever-se-ia usar “ORDER BY TAB1.COLUMN_ID”.

Analisando o comando SQL e as afirmações fornecidas:

A consulta SQL realiza um join entre duas instâncias de USER_TAB_COLUMNS, uma local e outra através de um banco de dados remoto (DB_LINK SECU), para comparar a estrutura das tabelas.

O DB_LINK SECU é um link de banco de dados que conecta a instância atual a outra instância remota.

A consulta compara as definições das colunas das tabelas, verificando se há discrepâncias nos tipos de dados, precisão, escala e comprimento.

A tabela TAB_DEPTOS é descrita antes da execução do comando SQL.

Analisando as afirmações fornecidas:

A) Incorreto: O comando faz referência a uma tabela em um banco de dados remoto através do DB_LINK SECU, mas o USER_TAB_COLUMNS@SECU referencia a estrutura das tabelas na instância remota, não do usuário local.

B) Incorreto: Substituir USER_TAB_COLUMNS@SECU por USER_TAB_COLUMNS resultaria em uma consulta apenas na tabela local USER_TAB_COLUMNS, ignorando as informações da instância remota. Isso modificaria significativamente o resultado da consulta.

C) Incorreto: A consulta verifica todas as colunas e não apenas uma. Além disso, a comparação não se limita à tabela TAB_DEPTOS.

D) Correto: O resultado da consulta não permite concluir que só há um campo diferente entre as tabelas TAB_DEPTOS na instância PRIM e na instância apontada pelo DB_LINK SECU. Pode haver mais campos diferentes que não foram incluídos na análise.

E) Incorreto: A cláusula ORDER BY 2 é válida, pois ordena os resultados com base na segunda coluna selecionada na consulta (COLUMN_ID). Não há necessidade de alteração.

Resposta correta:

Portanto, a alternativa correta é a D).

Assunto:

O assunto abordado na questão está relacionado ao uso de consultas SQL para comparar a estrutura das tabelas em diferentes instâncias do banco de dados Oracle, incluindo o uso de DB_LINKs para acessar bancos de dados remotos. Isso envolve o conhecimento sobre as tabelas do dicionário de dados do Oracle e como realizar comparações entre elas.

Nível de dificuldade

O nível de dificuldade da questão é intermediário a avançado, pois exige conhecimento sólido sobre consultas SQL, uso de DB_LINKs, e compreensão das estruturas de tabelas em diferentes instâncias.

Oracle 12C

Quanto ao Oracle 12c, os conceitos e a sintaxe para consultas utilizando DB_LINKs e comparações de estruturas de tabelas são os mesmos que no Oracle 9i. Portanto, as habilidades necessárias para resolver essa questão seriam aplicáveis ao Oracle 12c da mesma forma.


Quer acompanhar as novidade do site?

Leia mais em: iretoaoponto-tech.com.br/conc...

Questão 24 - HCPA 2009/3 - ANALISTA DE SISTEMAS I (ADMINISTRADOR DE BANCO DE DADOS)

Última atualização: 2024-02-13

Quer acompanhar as novidade do site?
Veja também:

Questão 22 - HCPA 2009/4 - ANALISTA DE SISTEMAS I (ADMINISTRADOR DE BANCO DE DADOS)

questão 22 operadores de conjunto no Oracle 8i

Como remover caracteres especiais no mysql?

remover caracteres especiais mysql

Quais os termos em inglês mais usados em banco de dados?

Inglês técnico banco de dados

Questão 11 - HCPA 2011 - ANALISTA DE SISTEMAS I (ADMINISTRADOR DE BANCO DE DADOS E SEGURANÇA DA INFORMAÇÃO)

questão 11 comandos sql oracle 10g

Quais os comandos necessários necessários para realizar uma consuta em Oracle de forma hierárquica?

questão 11 forma hierárquica oracle

Quais as funções nativas mais usadas no Oracle?

funções nativas oracle

Web Stories