by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

About 10053 Event




10053 Event

정의
  • CBO의 Optimization 과정을 Trace 파일에 출력
  • 목적 : Query Transformation이 점점 복잡해지면서 low level의 troubleshooting tool의 필요성이 제기 됨
  • query 수행 시작부터 결과를 보여주기까지의 과정을 알 수 있다.


특징
  • 10g 이전 버전 : PL/SQL 블록에 포함된 쿼리문에 대해서는 10053 트레이스 기능 작동 안 함
  • 10gR1과 10gR2의 차이점 : 섹션의 순서가 다르고, 여러 가지 설명 추가 및 시스템 통계가 기록되고, 조건절 및 개요와 함께 최종 실행 계획이 포함됨
  • Oracle의 공식문서에는 사용법 없음
  • user_dump_dest 에 "*.trc" 파일 생성
  • CBO인 경우에만 나옴 , RBO는 sql문장만 보임
  • RBO 에 Parse 되었다면 QUERY Section 이 보여지 않는다.
  • RBO 에 의해서 Parse 되는 3가지 이유
    • optimzer_mode 혹은 optimizer_goal 이 rule 일 경우
    • hint "rule" 이 사용된 경우
    • 문장에서 사용된 테이블 중에 통계정보도 전혀 없고, 힌트도 전혀 사용되지 않은 경우( rule 관련 힌트는 rule 뿐!!)
  • Display형태가 암호화 같이 가독성 어려움
  • CBO가 어떤 factor를 고려해서 작동하는가를 보여줌
  • Oracle Version / Parameter 변경에 따른 Optimizer 선택을 확인 할수 있다.
  • 다른 Trace 와 다르게, 10053 Level 2의 경우 Level 1 보다 적은 Trace 를 생성한다.
  • 10053 Event Trace 파일이 생성되는 조건
  • Query 는 반드시 (Hard) Parse 되어야 한다.
  • CBO 에 의해서 Parse 되어야 한다.


실행 방법
  • 현재 session에서 10053 트레이스 실행 방법
 alter session set events '10053 trace name context forever';
 alter session set events '10053 trace name context forever, level 1';
 alter session set events '10053 trace name context forever, level 2';
    • a & b번 : 같은 일을 함
    • c 번 : optimizer parameter 목록이 제외되어 약간 짧은 트레이스 파일 생성
  • 종료 : alter session set events '10053 trace name context off';


다른 session에서 실행
  • 실행 : SYS.DBMS_SYSTEM.SET_EV( <sid>, <serial#>, 10053, 1, '' )
  • 종료 ; SYS.DBMS_SYSTEM.SET_EV( <sid>, <serial#>, 10053, 0, '' )
  • Trace 파일 구분 : alter session set tracefile_identifier='10053_trace';


구성
  • 6개의 section으로 구성
    • query
    • parameters used by the optimizer
    • Based Statistical Information
    • Base Table Access Cost
    • General Plans
    • Recosting for special features


Table 정보
10053 Event Label dba_tables 설 명
CDN NUM_ROWS cardinality = 테이블의 record 수
NBLKS BLOCKS data를 가지고 있는 block의 수 (HWM 아래의 block수)
TABLE_SCAN_CST   The estimate cost in I/O to full-table-scan the table
AVG_ROW_LEN AVG_ROW_LEN o/h를 포함한 평균 record의 길이(bytes)


Index 정보
10053 Event Label dba_index 설 명
Index#, col#   index의 object#, column의 column_id
LVLS BLEVEL B* tree의 root block에서 leaf block까지의 depth
#LB LEAF_BLOCKS leaf block의 수
#DK DISTINCT_KEYS distinct key의 값
LB/K AVG_LEAF_BLOCKS_PER_KEY 한 index에 대한 평균 leaf block 수
DB/K AVG_DATA_BLOCKS_PER_KEY 한 index에 대한 평균 data block 수
CLUF CLUSTERING_FACTOR index에 대한 data record의 정렬 정도


Column 정보
10053 Event Label dba_tables/dba_index 설 명
NDV NUM_DISTINCT 전체 column의 distinct 값의 수
NULLS NUM_NULLS 'null' 값을 가지고 있는 column 의 값
DENS DENSITY historgram이 없을경우 1/NDV
LO LOW_VALUE (numeric인경우) 최소값
HI HIGH_VALUE (numeric인경우) 최대값


single table Base Acces Plans
0 parallel hint 8 hash cluster 16 partitions hint 24 swap inputs to join
1 no access path spec 9 rowid lookup 17 nopartitions hint 25 fact table
2 table scan 10 range scan backwards 18 anti-join 26 not a fact table
3 index unique 11 rowid range scan 19 index rowid range scan 27 merge of this view
4 index range 12 driving_site hint 20 bitmap index 28 don't push join predicate into this view
5 index and-equal 13   21 parallel_index hint 29 push join predicate into this view
6 orderby using an index 14 cache hint 22 noparallel_index hint 30 no_merge of this view
7 open cluster 15 nocache hint 23 index fast full scan 31 semi-join


테스트
  • 주의사항 : "set autotrace on"을 하면, plan_table에서 발생하는 과정까지 10053 trace에 기록이 되므로 가독성이 떨어짐


결과

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.