Ir para conteúdo

Arquivado

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

Robinson Silva

Criação de View usando outros objetos

Recommended Posts

Gostaria de saber, se é possível eu criar uma view em um schema, sendoque essa view será gerada por um select em tabelas de outros schemas??Ex: Tenho o usuario paulista e santoamaroconn paulista/senha@serviço;create or replace view teste(nome) as select nome from santomaro.tabela;A mensagem que retorna é que a tabela ou view não existe, e o pior é que ousuario paulista tem os grant's necessário para acessar as tabelas dosantoamaroGrato!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estão na mesma instancia ? Senão só por databaselink.

 

Parece correto tem certeza do grant de select ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estão na mesma instancia ? Senão só por databaselink.Parece correto tem certeza do grant de select ?

Motta,É tudo na mesma instância. O engraçado é se eu rodo apenas os SELECT's que compõem a View, retorna as linhas selecionadas, agora quando vou criar a View é apresentado o erro "table or view does exists"Agradeço desde já pelo seu help!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Robson, Dá para criar sim sem problemas, basta o usuário SANTOAMARO te dar um GRANT SELECT na TABELA que você deseja criar essa view. Depois para efeito de teste, tente um SELECT COUNT(*) FROM SANTOAMARO.TABELA; Caso retorne o total de linhas pra ti, pode fazer sua VIEW sem problemas que irá funcionar. Abraços, :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Robson, Dá para criar sim sem problemas, basta o usuário SANTOAMARO te dar um GRANT SELECT na TABELA que você deseja criar essa view. Depois para efeito de teste, tente um SELECT COUNT(*) FROM SANTOAMARO.TABELA; Caso retorne o total de linhas pra ti, pode fazer sua VIEW sem problemas que irá funcionar. Abraços, :D

Os grants já foram dados, o erro acontece só no momento de criação da view. Ex:SELECT coluna FROM paulista.tabelaUNIONSELECT coluna FROM santoamaro.tabelaAssim ele retorna o conteúdo da tabela, agora se eu faço:CREATE OR REPLACE VIEW teste(coluna)ASSELECT coluna FROM paulista.tabelaUNIONSELECT coluna FROM santoamaro.tabelaEle dá o erro, dizendo que a tabela não existe!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Robson,

 

Efetuei alguns testes no meu servidor aqui, e siga o exemplo:

 

AMBIENTE

 

Tenho um banco de dados Oracle 8i, com 2 owner, C_ROALMEIDA e RESTORE.

 

O usuário C_ROALMEIDA é DBA, e o RESTORE é usuário normal, somente com GRANT de CREATE TABLE e CREATE VIEW.

 

Siga os passos:

 

1º) Com o usuário C_ROALMEIDA passei a permissão SELECT para owner RESTORE na tabela tst_rodrigo.

 

2º) Loguei me com o usuário RESTORE, executei o seguinte comando:

 

SQL > create or replace TESTE_IMASTERS AS	 2	 select col1 from c_roalmeida.tst_rodrigo	 3	 union	 4	 select cola from tst_restore;

VIEW CREATED.

 

Entre com um usuário DBA e verifique na view dba_tab_privs se o usuário tem a permissão de SELECT!

 

Abraços, http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Robson, Efetuei alguns testes no meu servidor aqui, e siga o exemplo: AMBIENTE Tenho um banco de dados Oracle 8i, com 2 owner, C_ROALMEIDA e RESTORE. O usuário C_ROALMEIDA é DBA, e o RESTORE é usuário normal, somente com GRANT de CREATE TABLE e CREATE VIEW. Siga os passos: 1º) Com o usuário C_ROALMEIDA passei a permissão SELECT para owner RESTORE na tabela tst_rodrigo. 2º) Loguei me com o usuário RESTORE, executei o seguinte comando:

SQL > create or replace TESTE_IMASTERS AS	 2	 select col1 from c_roalmeida.tst_rodrigo	 3	 union	 4	 select cola from tst_restore;
VIEW CREATED. Entre com um usuário DBA e verifique na view dba_tab_privs se o usuário tem a permissão de SELECT! Abraços, http://forum.imasters.com.br/public/style_emoticons/default/grin.gif
Muito obrigado!!! Eu não sei dizer, mas eu consegui dar um select na tabela de outro usuário, mas o grant não havia sido dado pelo owner dela. Eu acabei de fazer os procedimentos indicados por você e foi perfeitamente!

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.