Não tenho muita experiência em Oracle, então me desculpe se esta é uma pergunta simples.
Tenho que mover muitos objetos no banco de dados de um esquema para outro. Estou tentando atualizar todas as dependências também, mas só para garantir, gostaria de deixar um link.
Exemplo :
Agora eu tenho no meu Schema 1 ( S1 ) uma MyTable . Os usuários fazem referência a ele como:
S1.MinhaTabela
Gostaria de mover MyTable para Schema 2 ( S2 )
S2.MinhaTabela
Gostaria que meus usuários ainda pudessem usar o MyTable como antes.
S1.MyTable / MyTable está realmente em S2, mas os usuários podem acessá-lo com S1 /
Eu tenho lido sobre Synonyms e parece que você pode criar públicos para que os usuários possam referenciar um objeto diretamente, como:
MyTable
Mas eu preciso que eles possam escrever S1.MyTable
Posso usar sinônimos para isso?
Sim claro. Você só precisa criar sinônimo no esquema S1 (não sinônimo público).
Veja como a pesquisa de qualquer objeto funciona (este exemplo pressupõe que o usuário tenha as permissões apropriadas e que você não fez a chamada como "schema.table")
Portanto, se você criar um sinônimo público, qualquer usuário que tenha acesso a pelo menos selecionar na tabela subjacente poderá vê-lo, sem nenhuma ação adicional de sua parte, mesmo para novos usuários. Se você criar um sinônimo privado, terá que criar um sinônimo privado para cada usuário que terá acesso a esse objeto específico, e terá que fazer isso para cada objeto que mover (isso se aplica a tabelas, sequências , e diversos outros DDL como pacotes, funções, etc).
Qualquer uma das opções é aceitável, dependendo do nível de segurança necessário para aquele objeto.