질문
오라클 성능 트러블슈팅의 기본 중의 기본, 핵심 중의 핵심은 무엇일까?
필자가 생각하는 정답은 바로 데이터임
오라클 성능 문제를 트러블슈팅하는 과정은 필요한데이터를 체계적으로 수집하고, 수집한 데이터를 기반해서 문제를 해석하고 해결책을 찾는 일련의 과정임
질문
어떤 데이터를 어떻게 수집할 것인가 ?
데이터를 수집하는 체계적인 방법을 가장 먼저 정의 해야함 (필자: 스냅샷/ 프로파일링 데이터 로 분류)
분류 | 의미 | 예제 |
---|---|---|
스냅샷 데이터 | 특정시점의 상태 데이터를 의미함 | 오늘 아침 10시에 V$SESSTAT뷰를 저장했다면, V$SESSTAT뷰에 대한 스냅샷 데이터를 가지고 있음 |
프로파일링(트레이스) 데이터 | 특정 구간에서 수행된 작업에 대한 데이터를 의미함 | 오늘 아침 10시부터 10시 10분까지 SQL*Trace를 수행했다면, 10분간의 프로파일링 데이터를 가지고있음 |
스냅샷 데이터는 공간적인 개념이며, 반면에 프로파일링 데이터는 시간적인 개념으로 이 두 가지 종류의 데이터를 합쳐야 완벽한 그림을 그릴수 있음
분류 | 종류 | 설명 |
---|---|---|
스냅샷 데이터 | 대부분의 딕셔너리 뷰들 | V$SESSTAT 뷰나 V$SESSION_WAIT뷰 와 같은 뷰들은 인스턴스의 현재상태에 대한 정보를 제공함 |
AWR 뷰들 | AWR이 제공하는 대부분의 뷰들은 특정 시점의 스냅샷 데이터들임 * 오라클은 한시간에 한번씩 데이터베이스의 전반적인 상태에 대한 스냅샷을 생성함 * AWR 스냅샷은 많은 수의 뷰들에 대한 스냅샷 데이터로 구성되어 있음 | |
덤프 파일들 | 오라클이 제공하는 덤프 파일들은 대부분 스냅샷 데이터임 * 예를 들어 PGA 힙 덤프(PGA Heap Dump)는 PGA의 현재 상태를 나타내는 스냅샷 데이터임 | |
프로파일링 데이터 | 진단 이벤트들 | SQL문장의 수행시간 정보를 기록하는 10046진단 이벤트, 옵티마이저가 SQL문장을 최적화하는 과정을 기록하는 10053 진단 이벤트등 은 모두 프로파일링 데이터를 생성함 * 이들 데이터들은 프로세스가 하는 일을 시간 순으로 기록한 것들임 |
매뉴얼 프로파일링 | V$SESSION_WAIT 뷰 자체는 스냅샷 데이터에 해당함 하지만 이뷰를 반복적으로 액세스하면 마치 프로파일링을 수행한 것과 비슷한 효과를 얻을 수 있음 |
분류 | 방법 | 설명 |
---|---|---|
스냅샷 데이터 | 차이(Delta) 값을 구함 | 특정 시점에서의 값 그 자체보다는 시점 A 와 시점 B 사이에 어떤 차이가 있는가가 핵심적인 데이터임 * 가령 Logical Reads가 얼마나 증가하는지, 리두크기는 얼마나 증가하는지 등의 데이터를 얻는 것이 중요함 * AWR 리포트는 두 개의 스냅샷 간의 차이(Delta)값을 효과적으로 보여주는 것을 목적으로 함 |
프로파일링 데이터 | 집계(Summary)를 수행 | 프로파일링 데이터는 시간 순으로 모든 작업, 혹은 아주 많은 수의 작업을 기록함 * 이 많은 데이터를 일일이 확인하는 것은 어려우며 대신 효과적으로 집계를 함으로써 의미있는 정보를 얻게 됨 * TKPROF 리포트를 사용해 보신 분이라면 그 의미를 직관적으로 이해하실수 있음 |
내용 요약
- 강좌 URL : http://www.gurubee.net/lecture/4098
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.