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

2013년 상반기 - 오라클 트러블슈팅 스터디




2013년 상반기 - 오라클 성능 트러블슈팅 스터디

스터디 개요

스터디 목적

  • 오라클 성능 문제를 트러블슈팅하기 위해 필요한 기본적인 개념과 테크닉을 키위기 위한 기본 베이스 습득.
  • 오라클 내부적인 동작 원리를 추적하여 내부적으로 프로세싱되는 개념을 스스로 한번쯤 생각해 볼 수 있는 기회 마련.
  • Oracle DBMS 동작원리를 이해하고 활용하며 습득한 지식을 공유.

스터디 인원

스터디 운영자

  • 김종원: 오라클클럽에서 (TeLl2/김종원)이라는 닉네임으로 활동을 하고 있습니다.

스터디 일정 및 장소

  • 스터디 장소 : 상암동 한솔 교육장
  • 스터디 기간 : 2013년 4월 ~ 2013년 7월
  • 스터디 일자 : 월 3회 토요일 10시 ~ 13시
스터디 교재

스터디 계획

  • 오라클 메커니즘에 대한 완벽한 이해.
  • 오라클 Logical Optimizer에 대한 이해.
  • 스터디 중간중간 스터디 내용에 대해 개인적으로 궁금했던 사항이나 혹은 현재 진행하고 있는 프로젝트에 대한 지식 공유나 토론의 장 마련.

스터디 교재

스터디 회칙

스터디 회칙

스터디 회비

  • 아래의 스터디원 회비를 입금해야지 스터디에 참여 할 수 있습니다.
    • 오라클클럽 정기회비 : 2만원
    • 월회비 : 1만원

지각/결석 벌금제도

  • 지각
    • 10분당 1,000원씩 벌금 부과 최대 3,000원 (~10분:1,000, ~20분:2,000, 21분 ~:3,000)
  • 결석
    • 사전 통보 후 불참 : 4,000원 (사전 통보는 꼭 게시판을 통해서 해야 합니다.)
    • 연락 없이 무단 결석 : 10,000원
스터디 일정

오라클 코어 Oracle Core : DBA와 개발자를 위한 필수 메커니즘

회차 대제목 소제목 발표자 스터디일자 장소 시간 진행여부
1회차 ch1.시작하기 시작하기 이지웅 2013년 4월 6일 상암동 10시
  ch2. 언두와리두 기본적인데이터변경        
    트랜잭션 요구사항(ACID)        
    리두단순성        
    언두복잡성        
  ch3. 트랜잭션과 일관성 트랜잭셩과 언두 김종원      
    데이터블록방문 및 언두        
    Commit SCN        
    LOB        
2회차 ch4. 락과 래치 자료구조 이정헌 2013년 4월 13일 상암동 10시
    래치(O)        
    래치        
    락(Lock)        
    요약        
3회차 ch5.캐시와 복사 메모리관리 오화균 2013년 4월 27일 상암동 10시
    Multiple 데이터 캐시        
    Working Data Set        
    LRU_TCH 알고리즘        
    데이터 검색        
4회차 ch6.기록과 복구 LGWR 홍정민 2013년 5월 4일 상암동 10시
    DBWR        
    DBWR의 상호작용        
    복구        
5회차 ch7.파싱과 최적화 SQL의 이해 장태길 2013년 5월 25일 상암동 10시
    딕셔너리 캐시        
    Parse Call 이란 무엇인가        
    라이브러리 캐시        
    파싱과 최적화        
  ch8.RAC와 몰락 Big Picture 오화균      
    다양한 안전장치        
    RAC의 핵심        
    RAC 동작 원리        
    복구        
    시퀀스        
  덤프 및 디버깅 Ora debug        
    SQL을 이용한 덤프방법        

The Logical Optimizer : 성능향상을 위한 트랜스포머의 SQL 재작성 전략

회차 대제목 소제목 발표자 스터디일자 장소 시간 진행여부
6회차 Part1. Query Transformation Concept [1.1 Logical Optimizer(Transformer)란 무엇인가]
[1.2 Query Transformation을 알아야 하는 이유]
[1.3 Query Transformation의 개념]
[1.4 Query Transformer의 구조]
[1.5 DBMS_XPLAN.DISPLAY_CURSOR]
[1.6 내가 사용한 Hint가 무시되는 이유]
[1.7 10053 Event Trace]
장태길 2013년 6월 1일 상암동 10시
  Part2. Query Transformation Concept [2.AHeuristic Query Transformation이란?]
[2.1. CSE (Common Subexpression Elimination) Where절에서 or 사용시 중첩된 조건절은 제거하라]
[2.2 JE (Join Elimination) 직접 사용하지 않는 테이블은 SQL에서 삭제하라]
[2.3. OE (Outer Join Table Elimination) 불필요한 Outer쪽 테이블은 삭제하라]
[2.4 OJE (Outer-Join Elimination) 의미 없는 Outer 조인을 Inner 조인으로 바꾸어라]
[2.5 OBYE (Order By Elimination) 불필요한 Order By를 삭제하라]
[2.6. DE (Distinct Eliminate) 불필요한 Distinct 를 제거하라]
[2.7 CNT (Count(column) To Count( * )) Count(컬럼) 사용시 해당 컬럼이 Not Null인 경우 Count( * )로 대체하라]
2.8 FPD (Filter Push Down) 조건절을 인라인뷰 내부로 이동시켜라
홍정민     10시
7회차   2.9 TP(Transitive Predicate) 조인절을 이용하여 다른 테이블에 상수조건을 생성시켜라
2.10 SVM(Simple View Merging) Simple View를 해체하여 메인 쿼리와 통합하라
2.11 LV(Lateral View) View를 Scalar 서브쿼리처럼 사용하라
2.12 FOJC(Full Outer Join Conversion) Full Outer 조인을 Union All로 변경하라
2.13 NFOJ(Native Full Outer Join) Full Outer 조인시 중복 Scan되는 테이블을 제거하라
2.14 OT(Operator Transformation) 특정 연산자를 다른 연산자로 변환하라
2.15 PM(Predicate Move Around) Where 조건을 다른 뷰에 이동시켜라
2.16 WCOTR (Where Current Of To Rowid) Where Current Of 를 사용하여 Index Scan을 회피하라
이정헌 2013년 6월 15일 상암동 10시
    2.24 EJE(Enhanced JE) Semi Anti 조인과 ANSI Style로 조인 할 경우도 JE가 가능하다 김종원      
8회차   2.31 GBEP (Group By Extension Pruning) 불필요한 Rollup 이나 CUBE를 삭제하라
2.32 GSTT* (Group Sets Using Temp Table) Grouping Sets 사용시 Temp 테이블에 적재후 이를 반복해서 사용하라
2.33 GSTU* (Grouping Sets To UNION) Grouping Sets를 UNION ALL로 변환하라
2.34 GSTR* (Grouping Sets To Rollup) Grouping Sets를 Rollup으로 변환하라
이지웅 2013년 6월 22일 상암동 10시
    2.B Part 2를 마무리 하며 이지웅      
  Part3. Cost Based Query Transformation 3.2 PPU(Predicate Pull Up) 비용이 많이 드는 조건절을 뷰 외부로 이동시켜라 오화균      
9회차   3.3 OR-Expansion (OR To Union All Conversion) OR 조건을 이용하여 Union All로 변경시켜라
3.4 OR-Expansion Using Function* (NVL, DECODE, RANK To Union All) NVL, DECODE, RANK 함수를 사용한 조건절을 이용하여 Union All 로 변경하라
3.5 TE (Table Expansion) 여러 개의 파티션을 액세스 할 때 파티션 마다 Union All로 분리해서 Index scan을 할지 FTS를 할지 판단하라
3.6 SJC (Set To Join Conversion) 집합연산을 조인으로 바꾸어라
3.7 CSU (Complex Subquery Unnesting) 복잡한 서브쿼리를 조인으로 바꾸어라
오화균 2013년 6월 29일 상암동 10시
10회차   3.8 CVM (Complex View Merging) Distinct나 Group By가 있는 뷰를 해체하라
3.9 JPPD Union View Union을 사용한 뷰에 조인 조건을 침투시켜라
3.10 JPPD Union All View Union All을 사용한 뷰에 조인 조건을 침투시켜라
3.11 JPPD Outer Join View 뷰에 Outer 조인을 사용한 경우 조인 조건을 침투시켜라
3.12 Multi Level JPPD 뷰 내부에 또 다른 뷰가 있더라도 메인 쿼리의 조인 조건을 침투시켜라
3.13 JPPD Extension Distinct나 Group By, Semi,Anti-join을 사용한 뷰에 조인 조건을 침투시켜라
김종원 2013년 7월 6일 상암동 10시
    3.14 GBP (Group By Placement) Group By를 먼저 수행하고 Join 하라 장태길      
  Part4. Cost Based Query Transformation Internal 4.1 Search Type의 개념과 종류
4.2 Search Type 분석에 사용될 SQL
4.3 Exhaustive Type 전략
4.4 Iterative Type 전략
4.5 Linear Type 전략
4.6 Two_Pass Type 전략
4.7 off option 전략
4.8 On Option 전략
4.9 State Space란 무엇인가?
4.10 CA*(Cost Annotation)이란 무엇인가
4.11 메모리 관리
이정헌      
11회차   4.12 Interleaving 선 변환 과정이 끝나면 후 변환 과정을 연이어 수행하라
4.13 Juxtapostion 배타적인 변환을 동시에 고려하여 Cost가 낮은 것을 선택하라
4.14 실무에 적용하기
4.A Part 4를 마무리 하며
홍정민 2013년 7월 13일 미정 미정
  부록과 색인 실무에서의 Query Transformation 이슈
미해결 과제
       

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
2.8 FPD (Filter Push Down) 조건절을 인라인뷰 내부로 이동시켜라
2.9 TP(Transitive Predicate) 조인절을 이용하여 다른 테이블에 상수조건을 생성시켜라
2.10 SVM(Simple View Merging) Simple View를 해체하여 메인 쿼리와 통합하라
2.11 LV(Lateral View) View를 Scalar 서브쿼리처럼 사용하라
2.12 FOJC(Full Outer Join Conversion) Full Outer 조인을 Union All로 변경하라
2.13 NFOJ(Native Full Outer Join) Full Outer 조인시 중복 Scan되는 테이블을 제거하라
2.14 OT(Operator Transformation) 특정 연산자를 다른 연산자로 변환하라
2.15 PM(Predicate Move Around) Where 조건을 다른 뷰에 이동시켜라
2.16 WCOTR (Where Current Of To Rowid) Where Current Of 를 사용하여 Index Scan을 회피하라
2.24 EJE(Enhanced JE) Semi Anti 조인과 ANSI Style로 조인 할 경우도 JE가 가능하다
2.31 GBEP (Group By Extension Pruning) 불필요한 Rollup 이나 CUBE를 삭제하라
2.32 GSTT* (Group Sets Using Temp Table) Grouping Sets 사용시 Temp 테이블에 적재후 이를 반복해서 사용하라
2.33 GSTU* (Grouping Sets To UNION) Grouping Sets를 UNION ALL로 변환하라
2.34 GSTR* (Grouping Sets To Rollup) Grouping Sets를 Rollup으로 변환하라
2.B Part 2를 마무리 하며
3.2 PPU(Predicate Pull Up) 비용이 많이 드는 조건절을 뷰 외부로 이동시켜라
3.3 OR-Expansion (OR To Union All Conversion) OR 조건을 이용하여 Union All로 변경시켜라
3.4 OR-Expansion Using Function* (NVL, DECODE, RANK To Union All) NVL, DECODE, RANK 함수를 사용한 조건절을 이용하여 Union All 로 변경하라
3.5 TE (Table Expansion) 여러 개의 파티션을 액세스 할 때 파티션 마다 Union All로 분리해서 Index scan을 할지 FTS를 할지 판단하라
3.6 SJC (Set To Join Conversion) 집합연산을 조인으로 바꾸어라
3.7 CSU (Complex Subquery Unnesting) 복잡한 서브쿼리를 조인으로 바꾸어라
3.8 CVM (Complex View Merging) Distinct나 Group By가 있는 뷰를 해체하라
3.9 JPPD Union View Union을 사용한 뷰에 조인 조건을 침투시켜라
3.10 JPPD Union All View Union All을 사용한 뷰에 조인 조건을 침투시켜라
3.11 JPPD Outer Join View 뷰에 Outer 조인을 사용한 경우 조인 조건을 침투시켜라
3.12 Multi Level JPPD 뷰 내부에 또 다른 뷰가 있더라도 메인 쿼리의 조인 조건을 침투시켜라
3.13 JPPD Extension Distinct나 Group By, Semi,Anti-join을 사용한 뷰에 조인 조건을 침투시켜라
3.14 GBP (Group By Placement) Group By를 먼저 수행하고 Join 하라
4.1 Search Type의 개념과 종류
4.2 Search Type 분석에 사용될 SQL
4.3 Exhaustive Type 전략
4.4 Iterative Type 전략
4.5 Linear Type 전략
4.6 Two_Pass Type 전략
4.7 off option 전략
4.8 On Option 전략
4.9 State Space란 무엇인가?
4.10 CA*(Cost Annotation)이란 무엇인가
4.11 메모리 관리
4.12 Interleaving 선 변환 과정이 끝나면 후 변환 과정을 연이어 수행하라
4.13 Juxtapostion 배타적인 변환을 동시에 고려하여 Cost가 낮은 것을 선택하라
4.14 실무에 적용하기
4.A Part 4를 마무리 하며
Big Picture
ch1.시작하기
ch2. 언두와리두
Commit SCN
DBWR
DBWR의 상호작용
LGWR
LOB
LRU_TCH 알고리즘
Multiple 데이터 캐시
Ora debug
Parse Call 이란 무엇인가
Part1. Query Transformation Concept
RAC 동작 원리
RAC 복구
RAC의 핵심
SQL을 이용한 덤프방법
SQL의 이해
Working Data Set
기본적인데이터변경
다양한 안전장치
데이터 검색
데이터블록방문 및 언두
딕셔너리 캐시
라이브러리 캐시
락(Lock)
래치
래치(O)
메모리관리
미해결 과제
복구
시퀀스
실무에서의 Query Transformation 이슈
요약
자료구조
트랜잭셩과 언두
파싱과 최적화