Páginas

sábado, 3 de agosto de 2013

[Oracle] - Verificando Queries mais demoradas


Bom pessoal, segue dica para verificar as queries mais demoras no seu Banco de dados.

Através da consulta abaixo podemos ter as consultas que estão mais demoradas:
select sql_text, elapsed_time/1000000 elapsed_sec, executions, disk_reads, buffer_gets
from v$sqlarea
order by elapsed_time desc;


Espero que essa dica possa ajudar. Que a Graça e Paz estejam com todos.

4 comentários:

  1. tentei rodar e não deu certo, aparece o erro

    ORA-00942: a tabela ou view não existe
    00942. 00000 - "table or view does not exist"
    *Cause:
    *Action:
    Erro na linha: 2 Coluna: 6

    tem que fazer alguma configuração?

    ResponderExcluir
  2. Rogério,

    Se você estiver utilizando um schema que não tenha o privilégio de select nesta view, vc não conseguirá visualizar os dados desta view.

    Vc pode conectar como SYS ou SYSTEM, ou um usuário que tenha a Role de DBA para executar essa consulta e poder acessar essas informações.

    Vc também pode dar o privilégio de Select para está view para seu usuário/schema.

    grant select on v$sqlarea to usuario_teste;

    Qualquer dúvida, só responder neste post.
    Att,
    Emerson

    ResponderExcluir
  3. Muito útil sua dica, porém no meu caso, retornou mais de 3000 linhas. Para contornar, usei a cláusula ROWNUM para limitar de acordo com minha necessidade, como abaixo:

    // Cinco consultas mais demoradas - Alterar ROWNUM para a quantidade desejada
    select sql_text, elapsed_time/1000000 elapsed_sec, executions, disk_reads, buffer_gets from v$sqlarea WHERE ROWNUM <=5 order by elapsed_time desc;

    ResponderExcluir
    Respostas
    1. Antonio,
      Obrigado por visitar o Blog, que bom ajudou. Agradeço pelo contribuição.
      Grande Abraço.

      Excluir