실제 수행 된 SQL PLAN 을 trace + tkprof 를 수행 하지 않고 실시간으로
Execution Plan
을 확인 하는 쿼리 입니다.
STEP 별 rows 를 확인 하기 위한 선행 작업으로
STATISTICS_LEVEL 파라미터를 ALL 로 변경 합니다.
또는 히든 파라미터인 _ROWSOURCE_EXECUTION_STATISTICS 의 Parameter 값을 TRUE 로 설정 합니다.
필자는 안전하게 후단을 가이드 합니다. (STATISTICS_LEVEL 파라미터 변경 시 SQL PLAN이 악성 으로 변경 될 위험이 있습니다)
이후 아래의 쿼리로 실시간 SQL 의 수행 PLAN 및 통계를 확인 할 수 있습니다.
1 2 3 4 5 6 7 8 9 |
select sum(LAST_ELAPSED_TIME)/1000000 AS "elapsed", sum(LAST_DISK_READS) AS "disk", sum(LAST_CR_BUFFER_GETS) AS "query", sum(LAST_CU_BUFFER_GETS) AS "current", max(LAST_OUTPUT_ROWS) AS "rows" from v$sql_plan_statistics_all where sql_id ='&&sql_id' and DEPTH=1 and child_number='&&child_number'; |
select LAST_OUTPUT_ROWS “Row”,
LPAD (‘ ‘, DEPTH) || OPERATION ||’ ‘|| OPTIONS ||’ ‘|| OBJECT_NAME || ‘ (cr=’ || LAST_CR_BUFFER_GETS|| ‘ pr=’ || LAST_DISK_READS || ‘ pw=’ || LAST_DISK_WRITES || ‘ time=’ || LAST_ELAPSED_TIME || ‘)’ AS “Row_Source_Operation”
from v$sql_plan_statistics_all
where sql_id=’&&sql_id’
and child_number=’&&child_number’
order by id;