dbms_xplan
패키지를 통해 Plan_Table에 저장된 실행계획을 좀 더 쉽게 출력할 수 있다.코드를 입력하세요
SQL> select plan_table_output
from table (dbms_xplan.display('plan_table',null,'all'));
v$sql
뷰를 제공한다.v$sql_plan
과 v$sql_plan_statistics
와 두개를 합친 v$sql_plan_statistics_all
이다.SQL> select * from table(dbms_xplan.display_cursor('sql_id',child_no,'format'));
AWR
와 과거
는 서로 짝꿍 키워드이다.[순서]
1. /+ gather_plan_statistics / 힌트를 사용한다. (set serveroutput off)
2. 시스템 또는 세션 레벨에서 statisticts_level
파라미터를 All
로 설정한다.
⭐️ (단, 운영DB에서는 삼가해야한다 !!) ⭐️
3. _rowsource_execution_statisticts
파라미터를 True
로 설정한다.
4. SQL 트레이스를 수행한다.
5. v$sql_plan_statistics
또는 v$sql_plan_statistics_all
뷰를 이용하여 조회한다.
6. dbms_xplan.display_cursor
함수를 이용해 조회 가능하다.
E-Rows
는 SQL을 수행하기 전 옵티마이저가 각 Row Source별 예상했던 로우 수
로서 v$sql_plan
에서 읽어온 값이다.A-Rows
는 실제 수행 시 읽었던 로우 수로서 v$sql_plan_statistics
에서 읽어온 값이다.SQL > SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('aduuuwpa8f64v', 0, 'ALLSTATS LAST'));
```sql
================================================================================================================
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID aduuuwpa8fv64v, child number 0
-------------------------------------
select * from scott.emp e, scott.dept d where d.deptno = e.deptno and e.sal >= 1000
Plan hash value: 615168685
----------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | OMem | 1Mem | Used-
----------------------------------------------------------------------------------------------------
|* 1 | HASH JOIN | | 1 | 24 | 24 |00:00:00.01 | 16 | 825K| 825K| 679K (0)|
| 2 | TABLE ACCESS FULL| DEPT | 1 | 4 | 4 |00:00:00.01 | 7 | | | |
|* 3 | TABLE ACCESS FULL| EMP | 1 | 24 | 24 |00:00:00.01 | 9 | | | |
----------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("D"."DEPTNO"="E"."DEPTNO")
3 - filter("E"."SAL">=1000)
================================================================================================================