Я пытаюсь проанализировать план выполнения запроса в моей базе данных Oracle. Я установил
alter system set statistics_level = all;
таким образом, чтобы я мог сравнивать расчетные мощности и время с фактическими мощностями и временем. Теперь я запускаю этот оператор, чтобы отобразить эту информацию.
select * from table(dbms_xplan.display_cursor(
sql_id => '6dt9vvx9gmd1x',
cursor_child_no => 2,
FORMAT => 'ALLSTATS LAST'));
Но я продолжаю получать это сообщение
NOTE: cannot fetch plan for SQL_ID: 6dt9vvx9gmd1x, CHILD_NUMBER: 2
Please verify value of SQL_ID and CHILD_NUMBER;
It could also be that the plan is no longer in cursor cache (check
v$sql_plan)
CHILD_NUMBER
был правильным, когда запрос выполнялся. Кроме того, когда я запускаю dbms_xplan.display_cursor
одновременно с запросом, я получаю реальный план. Но мое соединение JDBC закрывает PreparedStatement
сразу после выполнения, так что, возможно, поэтому план выполнения исчезает из v $ sql_plan
.
Я что-то не так понимаю, или как мне проанализировать расчетные / фактические значения после выполнения?