Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

abrhaao

Permissão de usuários sobre um schema

Recommended Posts

Pessoal, minha dúvida é muito simples.

 

Numa base Oracle, tenho um esquema chamado FISCAL. Eu conecto com usuários ZEZINHO, HUGUINHO E LUIZINHO, mas para acessar as tabelas do esquema FISCAL, eu preciso usar as seguintes sentenças:

 

 

SELECT * FROM FISCAL.TABELA_1

 

SELECT * FROM FISCAL.TABELA_2

 

 

Como é que eu posso dar permissões aos usuários ZEZINHO, HUGUINHO E LUIZINHO de modo a funcionarem as sentenças ... ?

 

SELECT * FROM TABELA_1

 

 

 

Muito obrigado, galera. Saudações ae!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cria um sinonimo público

 

CREATE SYNONYM TABELA_1 FOR SYS.FISCAL.TABELA_1;

 

Assim qq referencia a este tabela de outro owner não precisa de qualificar com o OWner antes.

 

Atenção pois a existência de um sinonimo não tem ligação com o GRANT de select nesta tabela, são duas coisas diferentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas amigo, o esquema tem centenas de tabelas. Tenho que fazer um sinônimo pra cada uma?? Tem um modo de o usuário utilizar o esquema inteiro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta SQL gera o script dos sinonimos faltantes , é alguma ajuda :

 

SELECT

('CREATE PUBLIC SYNONYM ' || OBJECT_NAME || ' FOR ' ||

OWNER || '.' || OBJECT_NAME || ';')

FROM ALL_OBJECTS O1

WHERE

O1.OWNER = 'FISCAL' AND

O1.OBJECT_TYPE IN ('TABLE','VIEW','SEQUENCE','PROCEDURE','FUNCTION') AND

NOT EXISTS

(SELECT 1 FROM ALL_OBJECTS O2

WHERE

O2.OBJECT_TYPE = UPPER('SYNONYM') AND

O2.OBJECT_NAME = O1.OBJECT_NAME);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

 

Na verdade, se ZEZINHO, HUGUINHO E LUIZINHO conseguem fazer um select na tabela de outro usuário, eles certamente já possuem permissão para isso com:

grant select on FISCAL.TABELA_1 to ZEZINHO, HUGUINHO E LUIZINHO;

grant select on FISCAL.TABELA_2 to ZEZINHO, HUGUINHO E LUIZINHO;

o que você deve estar querendo, é realizar a consulta com select sem a necessidade de especificar o usuário dono da tabela. Você pode criar um sinônimo público para isso, dessa forma:

create public synonym TABELA_1 for FISCAL.TABELA_1;

create public synonym TABELA_2 for FISCAL.TABELA_2;

Agora ZEZINHO, HUGUINHO E LUIZINHO poderão realizar o select com:

SELECT * FROM TABELA_1;

e

SELECT * FROM TABELA_2;

 

Não esqueça a necessidade de ZEZINHO, HUGUINHO E LUIZINHO possuírem a permissão de select nas tabelas.

 

Espero ter ajudado um pouco.

 

Pessoal, minha dúvida é muito simples.

 

Numa base Oracle, tenho um esquema chamado FISCAL. Eu conecto com usuários ZEZINHO, HUGUINHO E LUIZINHO, mas para acessar as tabelas do esquema FISCAL, eu preciso usar as seguintes sentenças:

 

 

SELECT * FROM FISCAL.TABELA_1

 

SELECT * FROM FISCAL.TABELA_2

 

 

Como é que eu posso dar permissões aos usuários ZEZINHO, HUGUINHO E LUIZINHO de modo a funcionarem as sentenças ... ?

 

SELECT * FROM TABELA_1

 

 

 

Muito obrigado, galera. Saudações ae!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.