--DBMS_XPLAN_예제
-- 해당 SQL 찾을 때 사용, SQL_ID 알거나 SQL 일부 내용 알 때 사용
SELECT *
FROM V$SQL
WHERE SQL_FULLTEXT LIKE '%SELECT%TB_TEST_1%'
--WHERE SQL_ID='7abcdefegd'
;
-- ALTER SESSION SET CURRENT_SCHEMA 설정시 필요한 SYNONYM 조회
-- DBA_OBJECTS에서 조회하거나 정확하게 하려면 DBA_SYNONYMS 조회
SELECT *
FROM DBA_OBJECTS
WHERE OBJECT_NAME='TB_TEST_1';
SELECT *
FROM DBA_SYNONYMS
WHERE TABLE_NAME='TB_TEST_1';
-- SQL에 OWNER 없을 때 주로 사용
ALTER SESSION SET CURRENT_SCHEMA=USERNAME;
-- BIND 변수 사용할 때 사용
-- V$BIND_CAPTURE 에 없을 때 DBA_HIST_SQLBIND 에서 조회
SELECT * FROM V$BIND_CAPTURE WHERE SQL_ID='7abcdefegd';
SELECT *
FROM DBA_HIST_SQLBIND
WHERE SQL_ID='7abcdefegd' ORDER BY SNAP_ID DESC, INSTANCE_NUMBER, POSITION;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR(SQL_ID,PLAN_HASH_VALUE,NULL,'advanced allstats last'));
--SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR('7abcdefegd',1107028900,NULL,'advanced allstats last'));
-- 플랜 확인 필요한 SQL에 /*+ gather_plan_statistics */ 삽입
SELECT /*+ gather_plan_statistics */ *
FROM TB_TEST_1;
-- 직전에 사용한 실제 플랜 확인 가능
-- 결과값을 메모장이나 별도 화면에서 붙여 넣어서 플랜 확인
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ADVANCED ALLSTATS LAST'));
-- 현재 세션에서 수행했던 실제 플랜 확인 가능 (주로 위에 방법이 편해서 사용)
SELECT PREV_SQL_ID, PREV_CHILD_NUMBER
FROM V$SESSION
WHERE SID=USERENV('SID') AND USERNAME IS NOT NULL
AND PREV_HASH_VALUE <>0;
SELECT * FROM TABLE(DBMS_XPALN.DISPLAY_CURSOR('7abcdefegd','0','advanced allstats last'));
'oracle' 카테고리의 다른 글
DBMS_XPLAN ORACLE PLAN 오라클 실제 플랜 (0) | 2019.12.17 |
---|---|
update select 다른 table 여러 컬럼 column oracle merge join (0) | 2019.04.11 |
job 프로시저 수행 (0) | 2017.09.27 |
테이블생성 프로시저 (0) | 2017.09.27 |