메뉴 건너뛰기

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;

/

 

번호 제목 글쓴이 날짜 조회 수
34 Windows 접속 에러 ORA-12638 [1] file Talros 2024.02.14 81
33 Python 을 이용해 파일 업로드 해 보기 [1] file Talros 2023.04.19 548
32 수집된 통계가 바로 반영되지 않고 원할 때 반영하도록 하는 방식 명품관 2023.04.04 252
31 ORA-28014: Cannot Drop Administrative Users 에러 현상 [1] 명품관 2023.03.27 392
30 ORA-3136 inbound connection time out & JDBC Io exception: Connection reset [1] Talros 2023.02.24 664
29 default 값을 포함한 컬럼 추가시 오라클 버전별 개선 사항 [1] 명품관 2023.01.17 512
28 mbr(multi block read) 과 sbr(single block read) 사이에 과연 어떤 방식을 선택해야 할까요? [1] 명품관 2022.09.16 327
27 Schema password 재 사용 불가능 하게 하기 [1] Talros 2022.01.26 1259
26 Pga 메모리 설정관련 내용 [1] 우뽕 2021.03.05 1768
25 DB option Enable / Disable 정리 방법 - Mos 참고 file 우뽕 2021.01.31 1204
24 RECO 프로세스 트레이스 발생 하면서 ORA-02019 에러 발생시 명품관 2021.01.12 981
23 OS 터미널 접속 없이 오라클 접속을 통해 OS CPU 사용율 모니터링 하기 [3] file 명품관 2020.12.22 801
» SQL Plan Management(SPM) - 3 Manual Plan Capture 명품관 2020.06.01 635
21 SQL Plan Management(SPM) - 2 DBMS_SPM.CONFIG로 필터링 file 명품관 2020.03.26 577
20 SQL Plan Management(SPM) - 1 파라미터의 기능 확인 명품관 2020.03.19 963
19 [12cR2 이상] 오브젝트 이름 30자이상 사용 가능 우뽕 2020.01.22 2246
18 Alert log 에서 갑자기 패치 정보가 나타나는 현상 Talros 2019.09.23 1625
17 External Table 기능을 사용해 파일 읽기 명품관 2017.04.05 955
16 DBMS_SCHEDULER을 통해 OS 레벨(EXTERNAL)의 shell 수행하기 명품관 2017.04.05 5757
15 오라클 패치 정보를 조회할 수 있는 뷰 DBA_REGISTRY_SQLPATCH 명품관 2017.03.02 5452
위로