Mestres, boa tarde.
Possuo 2 table space...e quero acessar a procedure da tablespace A na tablespace B....
O esquema de fazer "A.NOME_DA_PROCEDURE" não funciona,,como faço pra habilitar?
Banco 11g.
Obrigado
Chamar procedure de outra tablespace
- stcoutinho
- Moderador
- Mensagens: 850
- Registrado em: Qua, 11 Mai 2011 5:15 pm
- Localização: são Paulo - SP
Pablo,
Bom dia,
Na verdade, uma procedure está associada a um schema e não a uma tablespace. Seu "código fonte" está armazenado em tabelas do dicionário de dados (ex: USER_SOURCE/ALL_SOURCE/DBA_SOURCE).
Por outro lado, uma tabela ou índice - além de pertencer a um schema - está associada a uma tablespace.
Um schema corresponde a um usuário de banco que possui "objetos de banco" embaixo dele. Estes objetos podem ser tabelas, indices, sequences, procedures, functions, packages, etc.
Explicado este conceito, vamos à prática: Digamos então que você possue dois usuários de banco : "USER_A" e "USER_B", sendo que "USER_B" possui uma procedure de nome "SP_EXEMPLO".
Você deseja que USER_A consiga executar esta procedure. Como fazer?
A) Crie um sinonimo privado em USER_A para referencia esta procedure em USER_B:
CREATE OR REPLACE SYNONYM USER_A.SP_EXEMPLO FOR USER_B.SP_EXEMPLO;
B) Conecte-se como SYSDBA ou USER_B e atribua a permissão de acesso à procedure:
GRANT ALL ON USER_B.SP_EXEMPLO TO USER_A;
Somente uma observação: Não sei o que executa a USER_B.SP_EXEMPLO, mas desconfio que ela faça operações somente nas tabelas do schema USER_B. Veja bem o que precisa fazer, ok?
Abraços,
Sergio Coutinho
Bom dia,
Na verdade, uma procedure está associada a um schema e não a uma tablespace. Seu "código fonte" está armazenado em tabelas do dicionário de dados (ex: USER_SOURCE/ALL_SOURCE/DBA_SOURCE).
Por outro lado, uma tabela ou índice - além de pertencer a um schema - está associada a uma tablespace.
Um schema corresponde a um usuário de banco que possui "objetos de banco" embaixo dele. Estes objetos podem ser tabelas, indices, sequences, procedures, functions, packages, etc.
Explicado este conceito, vamos à prática: Digamos então que você possue dois usuários de banco : "USER_A" e "USER_B", sendo que "USER_B" possui uma procedure de nome "SP_EXEMPLO".
Você deseja que USER_A consiga executar esta procedure. Como fazer?
A) Crie um sinonimo privado em USER_A para referencia esta procedure em USER_B:
CREATE OR REPLACE SYNONYM USER_A.SP_EXEMPLO FOR USER_B.SP_EXEMPLO;
B) Conecte-se como SYSDBA ou USER_B e atribua a permissão de acesso à procedure:
GRANT ALL ON USER_B.SP_EXEMPLO TO USER_A;
Somente uma observação: Não sei o que executa a USER_B.SP_EXEMPLO, mas desconfio que ela faça operações somente nas tabelas do schema USER_B. Veja bem o que precisa fazer, ok?
Abraços,
Sergio Coutinho
-
- Rank: DBA Júnior
- Mensagens: 190
- Registrado em: Sex, 27 Out 2006 11:12 am
- Localização: 88350000
Pablo
Bom dia Sergio.
Puxa vida cara...obrigado pela explicação...sou um "zero a esquerda" em bd. por isso a confusão...mas,,,deu certinho o que você explicou....
Muito obrigado e tenha um excelente dia.
Puxa vida cara...obrigado pela explicação...sou um "zero a esquerda" em bd. por isso a confusão...mas,,,deu certinho o que você explicou....
Muito obrigado e tenha um excelente dia.
- stcoutinho
- Moderador
- Mensagens: 850
- Registrado em: Qua, 11 Mai 2011 5:15 pm
- Localização: são Paulo - SP
Oi Pablo,
O motivo da existência deste forum é justamente o de trocar experiências entre os foristas.
Tem muita coisa que eu também não sei e que preciso da ajuda dos colegas !
Seja bem vindo sempre que precisar de alguma coisa .. e fique à vontade para contribuir no GLUFKE.
Abraços,
Sergio Coutinho
O motivo da existência deste forum é justamente o de trocar experiências entre os foristas.
Tem muita coisa que eu também não sei e que preciso da ajuda dos colegas !
Seja bem vindo sempre que precisar de alguma coisa .. e fique à vontade para contribuir no GLUFKE.
Abraços,
Sergio Coutinho
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes