DB/Oracle DB

DBEAVER DBMS_XPLAN.DISPLAY_CURSOR 실제 실행계획

YL 2024. 1. 9. 01:50
반응형

DBEAVER, TOAD와 같은 일부 SQL툴에서는 자동으로 쿼리를 실행시키기 때문에 마지막에 실행한 실행계획을 보기 어렵다

 

* DBEAVER 증상

BEGIN DBMS_OUTPUT.GET_LINE(:1, :2); END;

SELECT SYS_CONTEXT( 'USERENV', 'CURRENT_SCHEMA' ) FROM DUAL

SET SERVEROUTPUT OFF => org.jkiss.dbeaver.model.sql.DBSQLException: SQL Error [922] [42000]: ORA-00922: 누락된 또는 부적합한 옵션

* TOAD 증상

SELECT * FROM DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL , 'ALLSTATS LAST -ROWS +ALIAS +OUTLINE')
=> 플랜에 이대로 표시

 

DBMS_XPLAN.DISPLAY_CURSOR를 사용할 땐 SQL_ID를 기준으로 실행계획을 봐야한다.

아니면 CTRL+SHIFT+E 눌러 실행계획을 봐야하는데 이 실행계획은 OPTIMIZER에서 제공하는 실행계획으로

정확하다고 보기 어렵다.

 

매번 SQL_ID를 입력하는게 번거로워 간단히 볼 수 있는 쿼리를 작성했다.

SQL_ID로 실행계획 확인하는 방법 DBMS_XPLAN.DISPLAY_CURSOR

 

/* 이런 메세지가 뜬다면 권한이 없다는 내용으로 해당 세션에 권한을 부여한다
  NOTE: cannot fetch plan for SQL_ID: , CHILD_NUMBER: 0
    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) */

ALTER SESSION SET STATISTICS_LEVEL=ALL;

 

SELECT *

FROM

 TABLE

/* KEYWORD */;

 

SELECT S.SQL_ID, S.SQL_TEXT,

DBMS_XPLAN.DISPLAY_CURSOR(S.SQL_ID, NULL, 'ALLSTATS LAST -ROWS +ALIAS +OUTLINE') AS PLAN

FROM

V$SQLTEXT S

WHERE

S.SQL_TEXT LIKE '%KEYWORD%'

AND S.COMMAND_TYPE = 3

ORDER BY SQL_TEXT DESC;

반응형

'DB > Oracle DB' 카테고리의 다른 글

ORACLE INTERVAL 윤년 윤달  (0) 2024.02.29
tnsnames.ora 위치  (0) 2022.11.04
ORACLE 프로시저 호출 변수 선언  (0) 2022.06.08
Oracle 설치 없이 Toad 사용하기  (0) 2021.09.01
ORACLE SQL 팁 - 특정 컬럼 SELECT  (0) 2020.07.05