Página 1 de 1

Demora execução VIEW com usuário diferente do owner

Enviado: Sex, 23 Nov 2012 2:01 pm
por leandromiranda87
Olá pessoal,

Tenho uma view criada por um usuário na base de dados. Para essa view foi criado um public synonym e dado grant de execução para outro usuário...

O problema é que, quando executo a consulta com o usuário owner da view, a consulta leva menos de 1 segundo. Já com o outro user, chega a quase 2 minutos.

Alguém tem alguma idéia do que pode estar acontecendo?

Uso Oracle Database 11g Release 11.2.0.3.0

Obrigado

Re: Demora execução VIEW com usuário diferente do owner

Enviado: Sex, 23 Nov 2012 4:30 pm
por leandromiranda87
Triste dizer pessoal.
também não sabia que era possível.. Mas existe diferenças no plano de execução entre os 2 users.

Vou analisar isso com mais calma e volto com mais detalhes...

Vlws..

Re: Demora execução VIEW com usuário diferente do owner

Enviado: Sex, 30 Nov 2012 7:47 am
por Trevisolli
Brother,

Verifica se não existe nenhum trigger de ON LOGON fazendo alteração de otimizador na sessão deste outro usuário.

Re: Demora execução VIEW com usuário diferente do owner

Enviado: Sex, 30 Nov 2012 1:55 pm
por leandromiranda87
Olá Trevisolli,

Obrigado pela ajuda. Já havia checado isso e não tem nada que justifique...

Solicitei ajuda de uma equipe de performance aqui da empresa.. rsrs, mas até agora não foi encontrado nd que faça sentido...

Provavelmente terei que dar uma revisada na view e tentar encontrar um caminho melhor pras consultas dela... :(

Caso conheça mais alguma coisa que possa influenciar, toda sugestão é bem vinda.

Abraço.

Re: Demora execução VIEW com usuário diferente do owner

Enviado: Sex, 30 Nov 2012 2:51 pm
por stcoutinho
Algumas sugestões:

- Vocês constumam usar PROFILES em seu banco de dados? Pode ser que um usuário pertença a uma um perfil diferente do outro, e isso eventualmente poderia impactar na forma que o usuário utiliza os recursos do servidor;
- Estes dois usuários, a tablespace temporária deles seria a mesma?
- Sua view menciona somente colunas, ou utiliza algum tipo de função (standard ou customizada), ou dblink ? Seria possível postar sua view no site?
- A querie que você executa é um SELECT * FROM "VIEW" ou seria alguma outra querie mais complexa, onde a view é somente um dos componentes?

Posso estar falando bobagem, mas o ORACLE cria um plano de ação na querie por usuário de banco. Talvez seu antigo usuário esteja adotando um plano de acesso que ainda está em memória, e seu usuário novo um outro plano diferente, uma vez que ele nunca havia executado esta querie antes.

Pode ser que ao inicializar a instância, ou dar um flush na shared pool, ambos passem a ver o mesmo plano. É só um comentário, pois acredito que você não queria fazer nenhuma destas opções no banco.

Abraços,

Sergio Coutinho