› Fóruns › Banco de dados Oracle › Sinônimos para Procedures, são obrigatórios?
- Este tópico contém 3 respostas, 3 vozes e foi atualizado pela última vez 13 anos, 1 mês atrás por
Priscilla Matos.
-
AutorPosts
-
20 de março de 2013 às 8:18 pm #105192
Priscilla Matos
ParticipanteBoa tarde a todos,
Tenho uma base de dados ORACLE, onde temos um Owner MASTER, e um usuário que enxerga os objetos dele, chamado USER1 e esse usuário é utilizado para conexão com banco de dados, fazendo a ponte entre aplicação e banco de dados.
Criei os sinônimos públicos para as tabelas e views desse esquema MASTER, até aí sem problemas.
Porém, existe um processo que chama uma determinada procedure e debugando me deparei com o erro “objeto não existe”, e descobri na verdade, que o erro é a falta do sinônimo público para essa procedure.
Tanto é que criando o sinônimo público para ele, o erro parou de ocorrer.
Minha dúvida é, é OBRIGATÓRIO o uso de sinônimo para TODAS as procedures ou depende de cada caso?
Grata,
Priscilla.20 de março de 2013 às 8:44 pm #105195rman
Participante@Priscilla_Matos
Funciona da seguinte forma, quando um objeto é acessado sem especificar o owner o Oracle entende que o objeto é do próprio owner. Quando o USER1 acessa por exemplo a procedure atualizaValor da seguinte forma:
BEGIN
atualizaValor;
END;
O Oracle procedure dentro do schema USER1 a procedure atualizaValor, mas como não existe, é apresentado o erro.
Para o USER1 acessar a procedure atualizaValor que é do MASTER, é necessário especificar o owner da seguinte forma:
BEGIN
MASTER.atualizaValor;
END;
Pelo que percebi a forma utilizada para especificar o owner foi a criação do SYNONYM. Respondendo a pergunta inicial, realmente é necessário especificar o owner em qualquer ocasião.
Só uma observação, quando se cria SYNONYM público, todos os usuários terão acesso a esse SYNONYM, o ideal é criar o SYNONYM apenas no usuário USER1.
20 de março de 2013 às 11:37 pm #105201Fábio Prado
Participante@Priscilla_Matos,
Apenas complementando o que o @rman comentou, é necessário criar sinônimos para objetos (tabela, visão, procedure ou qq outro) somente se vc não está especificando na aplicação o OWNER destes objetos. Não recomendo criar sinônimos públicos para qq ocasião. Pelo que eu entendi, para esta situação específicia seria melhor criar um sinônimo privado.
Para criar um sinônimo privado o usuário da aplicação tem que ter o privilégio <strong>CREATE SYNONYM</strong> e vc tem que estar logado com este usuário para criá-lo.[]s
21 de março de 2013 às 5:49 pm #105210Priscilla Matos
ParticipanteObrigada pela ajuda. 🙂
-
AutorPosts
- Você deve fazer login para responder a este tópico.
› Fóruns › Banco de dados Oracle › Sinônimos para Procedures, são obrigatórios?