abrhaao 0 Denunciar post Postado Julho 2, 2009 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
Motta 645 Denunciar post Postado Julho 2, 2009 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
abrhaao 0 Denunciar post Postado Julho 2, 2009 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
Motta 645 Denunciar post Postado Julho 2, 2009 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
Mauro Larrat 0 Denunciar post Postado Julho 7, 2009 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