Synonym -

Scripts Diversos para o Oracle SQL*Plus. (Relacionado a ferramenta Oracle SQL*Plus, para questões de SQL, usar o forum SQL)
Responder
Dulima-SP
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 193
Registrado em: Qui, 24 Jan 2008 1:56 pm
Localização: SP

Bom Galera...

Estou entrando nesse mundo de Oracle agora estou com algumas duvidas...
umas Delas e sobre 'synonym'

Qual e o conseito dele??
Quando Vou usar....
e qual a Necessidade para uma aplicação???


Vlw galera!!!
gokden
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 264
Registrado em: Dom, 19 Ago 2007 8:18 pm
Localização: Ribeirão Preto - SP
Lucas de Souza

OCA Developer
Analista de sistemas

bemm.....
ele serve para referenciar a outros objetos...

mais ele não é usado igual nas apostilas que falam que é para o diminuir o nome...

um exemplo de como eles são usados...:

Aqui na empresa onde eu trabalho, o usuário do programador não tem privilégio de criar tabelas, o unico usuário que faz isso é o usuário principal....
ou chamado o sono do SCHEMA, qui os unicos que tem a senha são os DBA´s...
mais quando esse usuário cria uma tabela, ela não fica visivel para os demais usuários...
para isso acontecer, é criado um SYNONYM PUBLIC (ou seja, todos podem ver) que direciona para este objeto novo, assim todo mundo pode ver este objeto.. =D

Selecionar tudo

CREATE TABLE teste (nome  varchar2(100)) -- só o usuário que criou o objeto pode ver esat tabela

CREATE PUBLIC SYNONYM nome_do_synonym FOR nome_do_schema.nome_do_objeto -- agora qualquer usuário com privilégio de select pode ver este objeto
nem todos os synonyms são publicos, eles podem ser privados, ou seja, somente o usuário X inxerga esse synonym

tendeu ??
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Com o synonym você consegue dar alias para outros objetos do seu banco de dados. você pode criar um alias pra uma procedure, function, table, package, etc...

Ele é bem útil em situações onde você tem que acessar tabelas de outro usuario ou outro banco de dados...
por exemplo, imagine uma situacao onde você cria um usuário com seu nome, porem você precisa fazer um select em uma tabela do usuário scott.
caso você tenha permissão pra isso você poderia fazer o select abaixo :

Selecionar tudo

select * from scott.SALES_HISTORY
nesse caso você poderia criar um synonym no seu usuário apontando pra tabela SALES_HISTORY do usuario scott, por exemplo.

Selecionar tudo

CREATE SYNONYM MY_SALES_HISTORY FOR scott.SALES_HISTORY
dessa forma você vai acessar a tabela (SALES_HISTORY) do usuário scoot através do nome que você definiu (MY_SALES_HISTORY).

isso é uma das possibilidades, nesse caso foi um exemplo de synonym de uma tabela, porem você pode utilizar pra outros objetos...

[]'s
Dulima-SP
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 193
Registrado em: Qui, 24 Jan 2008 1:56 pm
Localização: SP

Hummm
Tendeu.....

Selecionar tudo

CREATE PUBLIC SYNONYM nome_do_synonym FOR nome_do_schema.nome_do_objeto -- agora qualquer usuário com privilégio de select pode ver este objeto 
Esse Previlegio e dado automatico..
EX.

Quando ele cria um SYNONYM Publico.. Todos já tem direito de Select, ou se esse e um previlegio que o DBA da ao seu usuario???
gokden
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 264
Registrado em: Dom, 19 Ago 2007 8:18 pm
Localização: Ribeirão Preto - SP
Lucas de Souza

OCA Developer
Analista de sistemas

o dba teria que dar esse privilégio....
no caso seria

Selecionar tudo

GRANT select ON nome_schema.nome_objeto TO nome_usuario;
o curioso, é que quando o synonym existe, mais você não tem privilegio de select no objeto...

ai você dá um desc nesse objeto, ele mostra o schema e o nome do objeto =D
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes