by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

DBMS_XPLAN 패키지




DBMS_XPLAN패키지

  • DBMS_XPLAN 패키지를 통해 plan_table에 저장된 실행계획을 좀더 편리하게 볼수 있다.
  • 오라클 10g부터는 라이브러리 캐시에 캐싱되어있는 SQL커서에 대한 실행계획뿐 아니라 Row Source별 수행통계까지 손쉽게 출력할수 있도록 기능이 확장되었다.
  • AWR에 수집되었던 과거수행했던 SQL 실행계획을 확인하는 것도 가능하다.
(1) 실행계획 출력하기
  • 저장된 실행계획 보기위해 오라클에서 제공하는 UTLXPLS.SQL, UTLXPLP.SQL 스크립트를 이용하면 된다고 했는데, 이 스크립트 열어보면, DBMS_XPLAN 패키지에 있는 DISPLAY function을 호출하고 있다.
    (병렬쿼리에 대한 실행계획을 보려면, UTLXPLP.SQL를 이용)
    select plan_table_output
    from table(dbms_xplan.display('plan_table', null, 'serial'));
    
  • 직접 DBMS_XPLAN.DISPLAY function을 호출하면 다양한 포맷 옵션을 선택할 수 있다.
  • FORMAT을 아래와 함께 구사하면, 다양하게 이용가능
    ROWS, BYTES, COST, PARTITION, PARALLEL, PREDICATE, PROJECTION, ALIAS, REMOTE, NOTE
  • 암것도 입력 안하면
    'PLAN_TABLE'에 담긴 실행계획정보중에서 마지막에 실행된 실행계획을 보여주는데, 출력포맷은 'TYPICAL'옵션으로 출력한다라는 의미!
(2) 캐싱된 커서의 실제 실행계획 출력
  • 커서한 하드파싱과정을 거쳐서 메모리에 적재된 SQL과 Parse Tree, 실행계획, 그리고 그것을 실행하는데 필요한 정보를 담은 SQL Area를 말한다.
  • 오라클은 라이브러리 캐시에 캐싱되어 있는 각 커서에 대한 수행통계를 볼 수 있도록 v$sql 뷰를 제공.
  • 이와 함께 sql_id 값과 조인에서 사용할 수 있도록 v$sql_plan, v$sql_plan_statistics, v$sql_plan_statistics_all 등의 뷰를 제공
  • v$sql_plan 뷰를 일반 plan_table처럼 쿼리해서 조회할 수 있으나, dbms_xplan.display_cursor함수를 이용하면 편리.
  • dbms_xplan.display_cursor함수
    단일 SQL문에 대해 실제 수행된 실행계획을 보여주는 Function

  • 참고로, dbms_xplan.display_awr함수를 이용하면 AWR에 수집된 과거 수행되었던SQL에 대해서도 같은 분석작업을 진행할 수 있다.
(3) 캐싱된 커서의 Row Source별 수행통계 출력
  • SQL문에 gather_plan_statistics 힌트를 사용하거나, 시스템 또는 세션레벨에서 statistics_level파라미터를 all로 설정하면,
    오라클은 실제 SQL을 수행하는 동안의 실행계획 각 오퍼레이션 단계(Row Source)로 수행통계를 수집한다.
    (참고로, '_rowsource_execution_statistics'파라미터를 true로 설정하거나, SQL트레이스를 걸어도 Row Source별 수행통계가 수집된다.)

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. 11월 28, 2009

    오정희 says:

    DBMS_XPLAN패키지의 자세한 내용은 강정식군의 세미나 자료가 최고! 그만한 자료가 없으니, 그 자료를 받아 보세요~ (...

    DBMS_XPLAN패키지의 자세한 내용은 강정식군의 세미나 자료가 최고!

    그만한 자료가 없으니, 그 자료를 받아 보세요~

    (위의 내용도, 해당 자료 참고..)