É interessante obtermos dados de algumas queries para podermos identificar custos altos de processamento e assim trabalhar em cima delas para melhorar o fluxo de trabalho do Oracle e assim melhorar o desempenho do sistema.

Com a view V$SQL podemos buscar dados estatísticos de comandos SQL que estão em pool compartilhado, que armazena informações como as comandos sql executados recentemente. Essa view é uma boa ferramenta, pois podemos identificar nossas queries e em seguida executar uma consulta na view V$SQL e obter os dados necessários para análise.

Colocamos um comentário dentro da instrução SQL preferencialmente separando escopo e aplicação com um ponto:

select /* CONSULTA_CLIENTE.por_regiao */
       c.cli_cpf,
       c.cli_dta_cadastro,
       c.cli_nome
  from empresa e,
       cliente_parametros c
 where c.emp_codg = e.emp_codg
   and e.emp_uf = 'MT'

Assim identificamos o SQL dentro do pool compartilhado fazendo uma pesquisa na coluna SQL_TEXT pelo comentário que adicionamos, no caso '%CONSULTA_CLIENTE%':

select EXECUTIONS,
       ELAPSED_TIME,
       DISK_READS,
       BUFFER_GETS,
       USERS_EXECUTING
  from v$sql
 where SQL_TEXT like '%CONSULTA_CLIENTE%'
   and SQL_TEXT not like '%v$sql%'

Na última linha retiro as dados deste próprio select.


Utilizei alguns dos diversos campos da view V$SQL e aqui está a descrição de cada uma delas:

EXECUTIONS
NUMBER    
Número de execuções que ocorreram a este objeto, uma vez que foi trazido para a biblioteca de cache
ELAPSED_TIME
NUMBER   
Tempo decorrido (em microssegundos) utilizado por este cursor para análise, execução e busca
DISK_READS
NUMBER   
Número de leituras para este cursor filho
BUFFER_GETS
NUMBER   
Número de buffer obtido para este cursor filho
USERS_EXECUTING   
NUMBER   
Número de usuários executando este comando

Existem diversos outros campos na view V$SQL e que você pode ver suas descrições na referência do Oracle que deixei nos links de referência.


Nota sobre a view V$SQL
 
 Como está descrito nas referências do Oracle, a view V$SQL apresenta estatísticas de áreas de SQL compartilhadas sem a cláusula GROUP BY e contém uma linha para cada filho do SQL original inserido. Estatísticas exibidas em V$SQL são normalmente atualizadas no final de execução da consulta. No entanto, para consultas de longa execução, que são atualizadas a cada 5 segundos. Isto torna mais fácil para ver o impacto destes tipos de SQL enquanto eles ainda estão rodando.


Referências: