Olá pessoal!
Existem algumas formas de se analisar os scripts
submetidos ao banco de dados Oracle quanto a sua performance. Uma dessas formas é através de uma view
do esquema SYS chamada V_$SQLAREA, ou através do sinônimo
público V$SQLAREA que está setado para a tabela.
Bom, de qualquer forma, nesse objeto existem
informações interessantes para o acompanhamento dos scripts submetidos ao
servidor de banco, mesmo que eles não tenham sido concluídos com sucesso.
A consulta é a seguinte:
SELECT *
FROM ( SELECT ROUND ( ( (cpu_time / 1000000) / 60), 2) AS "Tempo
total de CPU",
executions AS "Quant.
exec.",
rows_processed AS "Quant.
linhas proc.",
disk_reads AS "Leituras
no disco",
first_load_time AS "Primeira
utilização",
last_load_time AS "Última
utilização",
parsing_schema_name AS "Usuário
analisado",
sql_text AS "SQL
exec."
FROM v$sqlarea
WHERE parsing_schema_name NOT IN ('SYS', 'SYSTEM', 'SYSMAN', 'DBSNMP')
ORDER BY 1 DESC)
WHERE ROWNUM <= 10;
Nesse caso, a seleção da consulta mais externa
(cláusula where) faz com que o
retorno sejam de apenas os 10 scripts com maior tempo total de CPU (garantido
no sort da consulta interna), mas
podemos alterar esse valor ou retirar a condição. Na seleção da consulta mais
interna, retirei os usuários de controle do DBA e do próprio SGBD Oracle, para
que a análise possa ser feita apenas por aplicações e pessoas.
Vou explicar rapidamente as informações da projeção
(cláusula select):
"Tempo
total de CPU" – nesse
“campo” é retornado o tempo total de CPU gasto para executar todas as vezes o
script em questão. Fiz uma continha para exibir o tempo em minutos;
"Quant.
exec" – nesse “campo” é retornado
a quantidade de vezes que o SQL em questão foi executado desde sua primeira vez
que foi submetido;
"Quant.
linhas proc." – nesse
“campo” é exibido a quantidade total de linhas processadas em todas as
execuções da SQL em questão;
"Leituras no disco" – nesse “campo” é retornado a quantidade total de
leituras realizadas no disco;
"Primeira utilização" – informa a data e hora da primeira utilização da SQL
em questão, ou pelo menos a mais recente das “primeiras vezes”;
"Última utilização" – informa a data e hora da última utilização da SQL em
questão;
"Usuário analisado " – informa qual o usuário da instância Oracle que
realizou a SQL;
"SQL exec." – informa o script SQL submetido.
Grande
abraço e até a próxima!!