본문 바로가기

ORACLE/Admin

Oracle 실제 수행된 쿼리의 실행 계획 확인(dbms_xplan.display_cursor)

728x90
반응형

dbms_xplan.display_cursor 로 실제 수행된 쿼리의 실행 계획을 확인할 수 있다.
 

1. 쿼리 수행 전

세션 레벨로 설정

--세션 스키마 설정 : 쿼리가 수행되는 스키마로 설정
alter session set current_schema=유저명;

--실행계획 레벨 설정
alter session set statistics_level=all;

 

2. 쿼리 수행

/*+gather_plan_statistics */ 힌트 추가
저는 SQL 검색을 용이하게 하기 위해 /*오늘01*/ 이라는 힌트를 추가합니다.

SELECT /*+gather_plan_statistics */ /*오늘01*/
    col1,
    col2,
from
    ...

 
이때 확인해야 할 사항 : 결과 값이 모두 출력이 되어야 합니다.
결과 값이 모두 출력이 되지 않는 경우 예측된 실행계획만 확인이 가능하며, 실제 실행계획을 확인할 수 없습니다.
실행계획 확인 시 예측 실행계획과 함께 아래 메세지가 출력됩니다.

Note
-----
- Warning: basic plan statistics not available. These are only collected when:
* hint 'gather_plan_statistics' is used for the statement or
* parameter 'statistics_level' is set to 'ALL', at session or system level

수행하는 툴의 Option 에서 Initial Fetch 값을 조정할 수 있습니다.
이때 너무 많은 행을 한 번에 출력할 경우 수행되는 서버 메모리가 부족할 수 있으니 주의하여야합니다. 
 

3. 실행계획 확인

--SQL문 검색하여 SQL ID 확인
select SQL_TEXT, SQL_ID from v$SQL where SQL_TEXT like '%/*오늘01*/%';

--실행계획 확인
select * from table(Dbms_xplan.display_cursor('위에서 확인한 SQL_ID', '', 'ALLSTATS LAST'));
728x90
반응형