문서유형ㅣ기술정보
분야ㅣ튜닝
적용제품버전ㅣ6FS06, 6FS07, 6FS07PS
문서번호ㅣTTUTI006
개요
Oracle의
DBMS_SHARED_POOL.PURGE 패키지 기능과 같이 DB 메모리에 저장되어 있는 SQL 실행 플랜을 삭제하는 방법입니다.방법
Tibero에서는 실행 플랜 삭제를 위해
ALTER SYSTEM FLUSH PPC; 명령어를 사용합니다.기능 사용 방법은 아래와 같습니다.
alter system flush ppc <child_number> '<sql_id>';
1. 삭제하려는 physical plan 확인 (SQL_ID : f6kwymknrt7z1)
SQL>
SET AUTOT ON
SET ROWS OFF
SELECT COUNT(*) FROM TAB;
1 row selected.
SQL ID: f6kwymknrt7z1
Child number: 28738
Plan hash value: 3443268965
Execution Plan
--------------------------------------------------------------------------------
1 COLUMN PROJECTION (Cost:40, %%CPU:0, Rows:1)
2 SORT AGGR (Cost:40, %%CPU:0, Rows:1)
3 INDEX JOIN (Cost:40, %%CPU:0, Rows:30)
4 TABLE ACCESS (ROWID): _DD_OBJ (Cost:39, %%CPU:0, Rows:223)
5 INDEX (RANGE SCAN): _DD_OBJ_IDX2 (Cost:6, %%CPU:0, Rows:540)
6 FILTER (Cost:2, %%CPU:0, Rows:1)
7 INDEX (UNIQUE SCAN): _SYS_CON13700693 (Cost:2, %%CPU:0, Rows:1)
Predicate Information
--------------------------------------------------------------------------------
4 - filter: (("_DD_OBJ"."TYPE_NO") IN ((1),(2),(3))) (0.107)
5 - access: ("_DD_OBJ"."OWNER_ID" = USERENV('SCHEMAID')) (0.035)
6 - filter: (("_DD_OBJ"."TYPE_NO") IN ((1),(2),(3))) (0.107)
7 - access: ("T"."TYPE_NO" = "_DD_OBJ"."TYPE_NO") (0.048)
NAME VALUE
------------------------------ ----------
db block gets 0
consistent gets 191
physical reads 0
redo size 0
sorts (disk) 0
sorts (memory) 7
rows processed 12. V$SQL에 해당 SQL_ID 조회하여 존재 여부 확인
SQL> SET AUTOT OFF SET ROWS ON SELECT SQL_ID, CHILD_NUMBER, SQL_TEXT FROM V$SQL WHERE SQL_ID = 'f6kwymknrt7z1'; SQL_ID CHILD_NUMBER SQL_TEXT ------------- ------------ -------------------------------------------------- f6kwymknrt7z1 28738 SELECT COUNT(*) FROM TAB
3. SQL_ID : f6kwymknrt7z1 인 physical plan 삭제
SQL> ALTER SYSTEM FLUSH PPC 28738 'f6kwymknrt7z1'; System altered.
4. V$SQL로 조회하여 삭제 확인
삭제되었기 때문에 존재하지 않음으로 표시됩니다.
SQL> SELECT SQL_ID, CHILD_NUMBER, SQL_TEXT FROM V$SQL WHERE SQL_ID = 'f6kwymknrt7z1'; 0 row selected.
주의1. 1번 노드에서 생성된 플랜은 1번 노드에서 아래 기재된 SQL 문구를 수행해야 삭제됩니다.alter system flush ppc <child_number> '<sql_id>';2.sql_id,child_number없이alter system flush ppc;수행할 경우 모든 플랜이 삭제되므로 사용할 때alter system flush ppc;수행하지 말아야 합니다.