Pular para o conteúdo

Fóruns Banco de dados Oracle Script captura queries pesadas! Script captura queries pesadas!

#89286
Marcio68Almeida
Participante

    Bom dia…
    O v$sqlarea “a” se une ao v$session “s” pela seguinte cláusula :
    And s.sql_address = a.address
    Você tem que tomar cuidado para que a sua consulta não comece a aparecer entre as mais custosas do banco…
    Você pode utilizar a seguinte consulta :
    Select s.address, s.last_load_time, s.first_load_time,
    TO_CHAR ((s.cpu_time / s.executions) / 1000, '999,999,999.9999') tempo_cpu,
    TO_CHAR ((s.elapsed_time / s.executions) / 1000, '999,999,999.9999') tempo_decorrido, s.executions,
    p.object_owner, p.object_name, p.cost, p.cardinality, p.bytes, p.io_cost, p.filter_predicates,
    w.active_time, w.estimated_optimal_size, w.last_memory_used, w.total_executions, w.active_time
    From v$sql_plan p,
    v$sql s,
    v$sql_workarea w
    Where p.address = s.address
    And p.address = w.address (+)
    And p.hash_value = w.hash_value (+)
    And p.id = w.operation_id (+)
    And p.options = 'FULL'
    And p.object_owner not like '%SYS%'
    And SUBSTR (last_load_time, 1, 10) = TO_CHAR (sysdate, 'yyyy-mm-dd')
    -- And (p.cardinality > 100
    -- or p.cost > 50)
    And p.filter_predicates is not null
    And s.executions > 1
    And (s.elapsed_time / 1000) > 1
    Order by tempo_decorrido desc --(cost + cardinality) desc

    Essa consulta aliada a esta :
    Select sql_text from v$sqltext where address = '9FF6A340' order by piece;

    poderá te trazer boas informações…