Как дольше поддерживать курсоры в v $ sql_plan

Я пытаюсь проанализировать план выполнения запроса в моей базе данных 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 .

Я что-то не так понимаю, или как мне проанализировать расчетные / фактические значения после выполнения?

6
задан Jon Heller 13 April 2011 в 06:09
поделиться