O que é um sinônimo no Oracle PL/SQL?
É um “apelido” ou nome alternativo que podemos atribuir a um objeto (tabela, procedure, etc.) para facilitar o acesso.
Qual a vantagem de usar sinônimos?
Simplifica o acesso a objetos, pois não precisamos especificar o nome do dono do objeto.
Qual comando é usado para criar um sinônimo público?
CREATE PUBLIC SYNONYM
Quem pode criar um sinônimo?
O dono do objeto.
O que significa “PUBLIC” em CREATE PUBLIC SYNONYM?
Indica que usuários externos ao ambiente do dono do objeto podem acessar o sinônimo, desde que tenham as permissões necessárias.
É obrigatório que o nome do sinônimo seja igual ao nome original do objeto?
Não, mas é recomendado que o nome do sinônimo remeta ao objeto original para facilitar a identificação.
Qual a sintaxe para criar um sinônimo para a tabela CLIENTE do usuário USER_DEV?
Depois de criar um sinônimo, como o user_app acessa a tabela CLIENTE?
Usando o nome do sinônimo: SELECT * FROM CLIENTE;
Em um ambiente corporativo com vários objetos de diferentes donos, qual problema os sinônimos ajudam a resolver?
Ajudam a evitar a necessidade de lembrar o nome do componente e o nome do dono para acessar os objetos.
Qual a relação entre sinônimos e grants (permissões)?
Usuários externos só podem acessar um sinônimo se tiverem as permissões (grants) necessárias no objeto original.
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?
Sim, desde que o sinônimo tenha sido criado corretamente e o user_app tenha as permissões necessárias no objeto original.
Qual a diferença entre um sinônimo público e um sinônimo privado?
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.
O que acontece se o objeto original (tabela, procedure, etc.) for removido, mas o sinônimo ainda existir?
O sinônimo se torna inválido e não pode mais ser usado.
Além de tabelas e procedures, que outros tipos de objetos podem ter sinônimos?
Views, sequences, e outros objetos de banco de dados.
Por que é importante que o nome do sinônimo remeta ao objeto original?
Para facilitar a identificação do objeto que está sendo acessado e evitar confusão.
Qual a primeira ação do Oracle ao referenciar um objeto?
Procurar o objeto no catálogo pessoal do usuário.
O que o Oracle verifica no catálogo pessoal?
Se a tabela, procedure ou função existe localmente para o usuário.
O que acontece se o objeto não é encontrado no catálogo pessoal?
O Oracle procura o objeto no catálogo de sinônimos.
O que é o catálogo de sinônimos?
Um catálogo interno do Oracle que associa sinônimos aos seus objetos correspondentes.
Qual a ordem de busca do Oracle ao referenciar um objeto?
1) Catálogo pessoal do usuário, 2) Catálogo de sinônimos.
Por que o Oracle busca primeiro no catálogo pessoal?
Para garantir que o objeto referenciado seja o que o usuário localmente definiu, se existir.
O que acontece se o Oracle não encontrar o objeto em nenhum dos catálogos?
Exibe um erro, como “Table or view does not exist”.
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?
SELECT * FROM EMPRESA
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.