вторник, 28 июля 2009 г.

Используются ли курсоры совместно

Для определения хэш планов запросов с неразделяемыми курсорами, можно запустить следующий запрос. Необходимо заметить, что все курсоры с одним и тем же планом могут быть использованы совместно.

SELECT plan_hash_value, count(*)
FROM v$sql group by plan_hash_value order by 2 desc;

Следующий запрос покажет SQL запросы которые могут быть использованы совместно

select b.sql_fulltext, b.sql_id, a.executions, a.disk_reads
from v$sqlarea a, v$sql b
where b.sql_id=a.sql_id and
a.plan_hash_value=NNNNNNN
order by 3 desc;

где NNNNNNN является plan_hash_value с наивысшим значением count

Для определения причины, по которой дочерние курсоры не могут быть использованы совместно, воспользуйтесь представлением V$SQL_SHARED_CURSOR, где указаны 50 возможных причин, по которым они стали неразделяемыми.