Чтобы быстро найти, если у вас есть долго работающие процессы, занимающие ваши ресурсы, посмотрите на v $ sesson_long_ops:
SELECT * FROM v$session_longops
см .: http://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_2092.htm
Я бы посоветовал вам взглянутьна это тоже: http://docs.oracle.com/cd/B28359_01/server.111/b28274/instance_tune.htm
Затем вы можете взять sid, чтобы найти SQL, который работает:
SELECT sql_text FROM v$session s
LEFT JOIN v$sqlarea sa ON s.sql_hash_value=sa.hash_value AND s.sql_address=sa.address
WHERE sid=&sid
Если вы работаете с Unix, вы также можете взглянуть на *С помощью команды 1013 * (top10
или topas
в разных вариантах Unix) вы можете взять идентификаторы процессов запросов, потребляющих наибольшее количество ресурсов процессора, а затем использовать следующую команду для получения вызывающего ошибки sql.
SELECT
s.username,
sa.sql_text
FROM v$process p
INNER JOIN v$session s ON p.addr=s.paddr
LEFT JOIN v$sqlarea sa ON s.sql_hash_value=sa.hash_value AND s.sql_address=sa.address
WHERE s.username IS NOT NULL AND p.spid=&SPID