메뉴 건너뛰기

Korea Oracle User Group

Admin

SQL Plan Management(SPM) - 3 Manual Plan Capture

 

Manual Plan Capture 방법에는 아래  가지의 방법이 있다.

 

AWR

STS(SQL Tuning Set)

Shared SQL Area

staging table

stored outline

단건 SQL

 

위 방법을 통해 초기 SQL Plan Baseline에 다량의 Plan을 로딩할 수 있다.

이는 초기 Baseline 구성이나 QA에서 테스트 완료하여 보장된 성능으로 Application을 디플로이하기 위해 사용할만 하다

 

Cloud Control 이나 PL/SQL(DBMS_SPM) 패키지를 사용하여 Plan을 로딩할 수 있다.

이글에서는 Cloud Control을 테스트할 수 없어 DBMS_SPM 패키지를 사용해 로딩하는 방법을 테스트 하도록 하겠다.

 

 

--AWR을 이용한 Plan Capture

DBMS_SPM.LOAD_PLANS_FROM_AWR

   begin_snap      IN  NUMBER,

   end_snap        IN  NUMBER,

   basic_filter    IN  VARCHAR2 := NULL,

   fixed           IN  VARCHAR2 := 'NO',

   enabled         IN  VARCHAR2 := 'YES',

   commit_rows     IN  NUMBER := 1000)

 RETURN PLS_INTEGER;

 

Table 156-18 LOAD_PLANS_FROM_AWR Function Parameters

 

begin_snap : Begin snapshot

end_snap : End snapshot

basic_filter : AWR에서 로딩할 SQL을 필터링 할 조건. NULL일 경우 AWR에 저장된 모든 Plan을 대상으로 함

  SQLSET_ROW Object Type에 등록된 요소를 기준으로 Filter 조건을 구성할 수 있다.

 

아래는 오라클에 구성된 sqlset_row object의 구조이다.

CREATE TYPE sqlset_row AS object (

  sql_id                   VARCHAR(13),

  force_matching_signature NUMBER,

  sql_text                 CLOB,

  object_list              sql_objects,

  bind_data                RAW(2000),

  parsing_schema_name      VARCHAR2(30),

  module                   VARCHAR2(48),

  action                   VARCHAR2(32),

  elapsed_time             NUMBER,

  cpu_time                 NUMBER,

  buffer_gets              NUMBER,

  disk_reads               NUMBER,

  direct_writes            NUMBER,

  rows_processed           NUMBER,

  fetches                  NUMBER,

  executions               NUMBER,

  end_of_fetch_count       NUMBER,

  optimizer_cost           NUMBER,

  optimizer_env            RAW(2000),

  priority                 NUMBER,

  command_type             NUMBER,

  first_load_time          VARCHAR2(19),

  stat_period              NUMBER,

  active_stat_period       NUMBER,

  other                    CLOB,

  plan_hash_value          NUMBER,

  sql_plan                 sql_plan_table_type,

  bind_list                sql_binds,

  con_dbid                 NUMBER,

  last_exec_start_time     VARCHAR2(19))

 

fixed : 기본값은 'NO' 이다. 이는 현재 Fixed로 구성된 Plan에 대해서는 변경하지 않는다.

enabled : 기본값은 'YES' 이다. 로딩된 Plan을 optimizer가 참조한다.

commit_rows : 커밋당 로드될 Plan 수 지정

 

 

SET SERVEROUTPUT ON

 

DECLARE

LOAD_RSLT PLS_INTEGER;

BEGIN

LOAD_RSLT := DBMS_SPM.LOAD_PLANS_FROM_AWR(begin_snap => 402

, end_snap => 473

, basic_filter => 'paring_schema_name = ''HR'''

, fixed => 

, enabled => 

, commit_rows => );

 

DBMS_OUTPUT.PUT_LINE('Load Plan Count : ' || TO_CHAR(LOAD_RSLT));

END;

/

 

번호 제목 글쓴이 날짜 조회 수
15 수집된 통계가 바로 반영되지 않고 원할 때 반영하도록 하는 방식 명품관 2023.04.04 268
14 ORA-28014: Cannot Drop Administrative Users 에러 현상 [1] 명품관 2023.03.27 412
13 ORA-3136 inbound connection time out & JDBC Io exception: Connection reset [1] Talros 2023.02.24 685
12 mbr(multi block read) 과 sbr(single block read) 사이에 과연 어떤 방식을 선택해야 할까요? [1] 명품관 2022.09.16 340
11 Schema password 재 사용 불가능 하게 하기 [1] Talros 2022.01.26 1287
10 RECO 프로세스 트레이스 발생 하면서 ORA-02019 에러 발생시 명품관 2021.01.12 997
9 OS 터미널 접속 없이 오라클 접속을 통해 OS CPU 사용율 모니터링 하기 [3] file 명품관 2020.12.22 812
» SQL Plan Management(SPM) - 3 Manual Plan Capture 명품관 2020.06.01 649
7 SQL Plan Management(SPM) - 2 DBMS_SPM.CONFIG로 필터링 file 명품관 2020.03.26 589
6 SQL Plan Management(SPM) - 1 파라미터의 기능 확인 명품관 2020.03.19 985
5 Oracle Resource Limit를 이용한 간단한 Parameter Check (GV$RESOURCE_LIMIT) 에밀리오 2016.07.15 2236
4 Oracle VMSTAT을 이용한 CPU 사용량 활용법 에밀리오 2016.07.14 891
3 Kill Session Script (GV$SESSION) 에밀리오 2016.07.12 2126
2 Active Session History를 이용한 TOP SQL 분석 (GV$ACTIVE_SESSION_HISTORY) 에밀리오 2016.07.12 1195
1 Alert Log를 SQL 사용하여 보기 (X$DBGALERTEXT) [1] 에밀리오 2016.01.28 2020
위로