SQL sem explicitação de OWNER

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
ricardoreis
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Ter, 24 Nov 2009 11:41 pm
Localização: Bahia

Pessoal,

Gostaria de executar uma consulta a tabelas de um owner sem ter que deixar explicito qual seja.

Ex:

Selecionar tudo

select * from POI.aluno -> select * from aluno
Sem dar o erro table or view does not exist e sem estar logado com o usuario no owner.

Obrigado!

Informações do Ambiente:
* Versão do Oracle: 9i
* Sistema Operacional: Windows
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

você tem q criar um sinonimo para a tabela

Selecionar tudo

create public synonym aluno for POI.aluno;
ricardoreis
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Ter, 24 Nov 2009 11:41 pm
Localização: Bahia

Opa obrigado!

Mas preciso disso para todos os owner e suas tabelas. Tem algum comando para owners?

o/
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

n entendi muito bem o que você quer realmente..

para executar isso

Selecionar tudo

 select * from POI.aluno
você precisa ter grant no objeto aluno

e para fazer isso

Selecionar tudo

select * from aluno 
alem do grant você precisa do sinonimo


como assim "todos os owner".. cada objeto so tem um owner.

desculpa mas n entendi
ricardoreis
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Ter, 24 Nov 2009 11:41 pm
Localização: Bahia

Opa, acho que pulei algumas coisas, desculpa.

Meu real problema é que eu tenho que acessar uns 10 owners, onde cada um desses tem cerca de 50 tabelas. Da forma que você me mostrou, faço um por vez. Gostaria de algum comando que liberace o acesso a todas as tabelas de todos os owner, sem ter a necessidade de ao usar um Select ter que informar o owner de uma tabela.

^^
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

então..

com a instrucao

Selecionar tudo

select table_name from user_tables
você tera todas as tabelas do seu usuario

sendo assim podera montar o seu

Selecionar tudo

create public synonym aluno for POI.aluno; 
de forma dinamica

e dai executar com

Selecionar tudo

EXECUTE IMMEDIATE intrucao_montada_dinamicamente
outra forma eu não saberia mas talvez alguém te de uma ajuda
burga
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Qui, 26 Nov 2009 1:05 pm
Localização: SP

Oi Ricardo,

Não existe forma para owner, só através de grants e sinônimos mesmo em objetos. Lembrando que seria melhor não criar sinônimos públicos e sim somente pro usuário(s) que fará a conexão.

O fato de não existir um meio de fazer isto com um comando para o owner ocorre porque podem existir vários objetos com mesmo nome em diferentes esquemas, e o Oracle não teria como controlar isto.

Portanto, você terá que criar um sinônimo pra cada objeto a ser acessado mesmo (tabelas, sequences...). E caso o nome se repita, terá que escolher um sinônimo diferente para cada repetição. :)

O victor passou um modo simples de se conseguir o script sem esforço. Assim você só teria que acertar os nomes repetidos entre os objetos (se existirem).
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante