Sinônimos e Dependências Flashcards

(39 cards)

1
Q

O que é um sinônimo no Oracle PL/SQL?

A

É um “apelido” ou nome alternativo que podemos atribuir a um objeto (tabela, procedure, etc.) para facilitar o acesso.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qual a vantagem de usar sinônimos?

A

Simplifica o acesso a objetos, pois não precisamos especificar o nome do dono do objeto.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Qual comando é usado para criar um sinônimo público?

A

CREATE PUBLIC SYNONYM

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Quem pode criar um sinônimo?

A

O dono do objeto.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

O que significa “PUBLIC” em CREATE PUBLIC SYNONYM?

A

Indica que usuários externos ao ambiente do dono do objeto podem acessar o sinônimo, desde que tenham as permissões necessárias.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

É obrigatório que o nome do sinônimo seja igual ao nome original do objeto?

A

Não, mas é recomendado que o nome do sinônimo remeta ao objeto original para facilitar a identificação.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qual a sintaxe para criar um sinônimo para a tabela CLIENTE do usuário USER_DEV?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Depois de criar um sinônimo, como o user_app acessa a tabela CLIENTE?

A

Usando o nome do sinônimo: SELECT * FROM CLIENTE;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Em um ambiente corporativo com vários objetos de diferentes donos, qual problema os sinônimos ajudam a resolver?

A

Ajudam a evitar a necessidade de lembrar o nome do componente e o nome do dono para acessar os objetos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Qual a relação entre sinônimos e grants (permissões)?

A

Usuários externos só podem acessar um sinônimo se tiverem as permissões (grants) necessárias no objeto original.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Se o usuário user_app tem permissão para acessar a procedure USER_DEV.INCLUIR_CLIENTE, ele automaticamente tem permissão para acessar o sinônimo INCLUIR_CLIENTE?

A

Sim, desde que o sinônimo tenha sido criado corretamente e o user_app tenha as permissões necessárias no objeto original.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Qual a diferença entre um sinônimo público e um sinônimo privado?

A

Um sinônimo público pode ser acessado por qualquer usuário que tenha as permissões necessárias, enquanto um sinônimo privado só pode ser acessado pelo seu criador.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

O que acontece se o objeto original (tabela, procedure, etc.) for removido, mas o sinônimo ainda existir?

A

O sinônimo se torna inválido e não pode mais ser usado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Além de tabelas e procedures, que outros tipos de objetos podem ter sinônimos?

A

Views, sequences, e outros objetos de banco de dados.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Por que é importante que o nome do sinônimo remeta ao objeto original?

A

Para facilitar a identificação do objeto que está sendo acessado e evitar confusão.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Qual a primeira ação do Oracle ao referenciar um objeto?

A

Procurar o objeto no catálogo pessoal do usuário.

17
Q

O que o Oracle verifica no catálogo pessoal?

A

Se a tabela, procedure ou função existe localmente para o usuário.

18
Q

O que acontece se o objeto não é encontrado no catálogo pessoal?

A

O Oracle procura o objeto no catálogo de sinônimos.

19
Q

O que é o catálogo de sinônimos?

A

Um catálogo interno do Oracle que associa sinônimos aos seus objetos correspondentes.

20
Q

Qual a ordem de busca do Oracle ao referenciar um objeto?

A

1) Catálogo pessoal do usuário, 2) Catálogo de sinônimos.

21
Q

Por que o Oracle busca primeiro no catálogo pessoal?

A

Para garantir que o objeto referenciado seja o que o usuário localmente definiu, se existir.

22
Q

O que acontece se o Oracle não encontrar o objeto em nenhum dos catálogos?

A

Exibe um erro, como “Table or view does not exist”.

23
Q

Temos uma tabela chamada TAB_EMPRESA, que pertence ao usuário USER_DEV.

Foi criado um sinônimo, conforme o comando abaixo:

CREATE PUBLIC SYNONYM EMPRESA FOR USER_DEV.TAB_EMPRESA;

Qual deve ser o comando SQL para consultar os dados desta tabela?

A

SELECT * FROM EMPRESA

24
Q

Crie sinônimos para que o usuário USER_APP acesse, de forma mais simples, as procedures INCLUINDO_PRODUTO e INCLUINDO_DADOS_VENDA, bem como as tabelas PRODUTO_EXERCICIO e PRODUTO_VENDA_EXERCICIO.
Use o mesmo nome do objeto como nome do sinônimo.

25
O que é considerado um objeto no banco de dados Oracle?
Qualquer componente, como tabelas, procedures, funções e sinônimos.
26
Qual objeto a procedure APP_INCLUIR_CLIENTE acessa diretamente no nível 3?
O sinônimo de INCLUIR_CLIENTE.
27
Por que a procedure APP_INCLUIR_CLIENTE acessa o sinônimo de INCLUIR_CLIENTE em vez da procedure diretamente?
Porque APP_INCLUIR_CLIENTE pertence ao usuário user_app, que não tem permissão para acessar diretamente a procedure INCLUIR_CLIENTE pertencente ao user_dev, mas tem permissão para acessar o sinônimo.
28
Qual é a cadeia de ligações a partir de APP_INCLUIR_CLIENTE?
APP_INCLUIR_CLIENTE -> sinônimo de INCLUIR_CLIENTE -> procedure INCLUIR_CLIENTE -> tabela "CLIENTE".
29
Qual função é acessada pela procedure INCLUIR_CLIENTE?
A função OBTER_CATEGORIA_CLIENTE.
30
Descreva o caminho completo de dependência quando a função OBTER_CATEGORIA_CLIENTE é acessada a partir de APP_INCLUIR_CLIENTE.
APP_INCLUIR_CLIENTE -> sinônimo de INCLUIR_CLIENTE -> INCLUIR_CLIENTE -> OBTER_CATEGORIA_CLIENTE -> tabela "CLIENTE".
31
O Oracle oferece uma ferramenta nativa para mapear dependências?
Não, mas podemos usar scripts como o utldtree.sql para criar essa funcionalidade.
32
Onde geralmente está localizado o script utldtree.sql?
Em um diretório específico da instalação do Oracle, como c:\app\Alura-Estudio\product\21c\dbhomeXE\rdbms\admin.
33
Quais objetos o script utldtree.sql cria?
Uma sequência, uma tabela temporária (deptree_temptab), uma procedure (deptree_fill) e uma view (deptree).
34
Qual a função da procedure deptree_fill?
Analisa e identifica as dependências do objeto especificado.
35
Qual a finalidade da view deptree?
Fornece o resultado das dependências encontradas.
36
Com qual usuário devemos executar o script utldtree.sql?
Com o usuário proprietário dos objetos no banco de dados.
37
Durante as aulas, vimos a utilização do script utldtree.sql, que criou para nós uma tabela chamada DEPTREE_TEMPTAB. Mas qual é a sua finalidade?
É nessa tabela que são guardadas as estruturas de dependências. Em DEPTREE_TEMPTAB é onde são armazenadas as estruturas de dependências.
38
No momento de compilação de uma procedure ou função, o Oracle armazena no dicionário de dados todas as referências a outros objetos realizadas pelo código compilado. Sobre isso, são verdadeiras as seguintes afirmativas: a) Os objetos exibidos na saída da view DEPTREE podem ter impacto no seu código caso o objeto referenciado na procedure DEPTREE_FILL tenha uma alteração sua estrutura. b)Depois de executar a procedure DEPTREE_FILL para um novo objeto, os dados de dependência de uma execução anterior também ficam armazenados e disponíveis para uma consulta. c)Para construir a estrutura de dependência de um determinado objeto, é necessário executar a procedure DEPTREE_FILL. d)A saída da view DEPTREE mostra todos os objetos que têm dependência direta e indireta com o objeto referenciado na execução da procedure DEPTREE_FILL.
a) Os objetos exibidos na saída da view DEPTREE podem ter impacto no seu código caso o objeto referenciado na procedure DEPTREE_FILL tenha uma alteração sua estrutura. c)Para construir a estrutura de dependência de um determinado objeto, é necessário executar a procedure DEPTREE_FILL. d)A saída da view DEPTREE mostra todos os objetos que têm dependência direta e indireta com o objeto referenciado na execução da procedure DEPTREE_FILL.
39
Sobre o gerenciamento de dependências, marque as alternativas corretas: a) Essa solução funciona de maneira dinâmica, atualizando de acordo com a criação de novas procedures. b)Depois de executarmos a query, teremos as informações de maneira estática, ou seja, se forem criadas procedures logo após, nossas dependências estarão desatualizadas. c)É útil para sabermos o que é necessário ter instalado no computador para modificarmos nosso código. d)Só teremos armazenados os dados de dependência de um objeto por vez.
b)Depois de executarmos a query, teremos as informações de maneira estática, ou seja, se forem criadas procedures logo após, nossas dependências estarão desatualizadas. d)Só teremos armazenados os dados de dependência de um objeto por vez.