본문 바로가기
DBMS/ORACLE

Orange, QueryBox 등 쿼리툴에서 xplan 안될 때 해결법

by 드바 2023. 8. 31.

 

오렌지나 디비버 같은 쿼리 툴에서  XPLAN 조회 시 다른 결과가 나오며 실행통계 확인이 불가능한 경우
툴에서 출력 건 수 제한에 걸려 발생하는 경우가 많은데 해결법을 설명함

 

쿼리 툴에서 XPLAN 조회 아래와 같이 다른 원했던 결과가 아닌 다른 SQL의 결과가 나오는 경우가 있다

-- SQL 실행
SELECT /*+ gather_plan_statistics */ * FROM sk.tab4 ;

-- XPLAN 실행
SELECT * FROM TABLE (DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ALLSTATS LAST -ROWS +OUTLINE +PARTITION +PARALLEL')) ;

SQL_ID  fnr6th3s0sg5t, child number 0
-------------------------------------
SELECT * FROM TABLE (DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ALLSTATS LAST
-ROWS +OUTLINE +PARTITION +PARALLEL'))

Plan hash value: 3713220770

------------------------------------------------------------
| Id  | Operation                         | Name           |
------------------------------------------------------------
|   0 | SELECT STATEMENT                  |                |
|   1 |  COLLECTION ITERATOR PICKLER FETCH| DISPLAY_CURSOR |
------------------------------------------------------------

 

아래 그림에 100+ rows 라는 부분이 보이는데

조회 건이 많은데(1000건) 100건만 보여주도록 툴에서 제한이 걸려있는 경우가 그렇다

쿼리결과출력화면
100건 제한

 

해결방법

1. SQL 실행

SELECT /*+ gather_plan_statistics */ * FROM sk.tab4 ;

 

2. 툴마다 다르지만 아래 처럼 모든 데이터 가져오는 옵션이 있을 것이다(예시 툴은 QueryBox)

모든데이터가져오기
모든 데이터 fetch 클릭

 

3. 모든 데이터 가져온 DBMS_XPLAN 조회

SELECT * FROM TABLE (DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ALLSTATS LAST -ROWS +OUTLINE +PARTITION +PARALLEL')) ;

SQL_ID  f58dx14rujyyk, child number 0
-------------------------------------
SELECT /*+ gather_plan_statistics */ * FROM sk.tab4

Plan hash value: 4132504640

---------------------------------------------------------------------------
| Id  | Operation         | Name | Starts | A-Rows |   A-Time   | Buffers |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |      1 |  73082 |00:00:00.02 |    2133 |
|   1 |  TABLE ACCESS FULL| TAB4 |      1 |  73082 |00:00:00.02 |    2133 |
---------------------------------------------------------------------------

Outline Data
-------------

/*+
BEGIN_OUTLINE_DATA
IGNORE_OPTIM_EMBEDDED_HINTS
OPTIMIZER_FEATURES_ENABLE('19.1.0')
DB_VERSION('19.1.0')
OPT_PARAM('_px_adaptive_dist_method' 'off')
OPT_PARAM('_optimizer_strans_adaptive_pruning' 'false')
OPT_PARAM('_optimizer_nlj_hj_adaptive_join' 'false')
ALL_ROWS
OUTLINE_LEAF(@"SEL$1")
FULL(@"SEL$1" "TAB4"@"SEL$1")
END_OUTLINE_DATA
*/

 

 

 

 

 

 

댓글