ORACLE/TUNING2010. 3. 23. 13:41
반응형
출처 : http://www.urbantree.wo.tc/entry/6-Using-Automatic-Workload-Repository

AWR (Automatic Workload Repository)

- SYS 소유
- SYSAUX TS 에 존재
- MMON에 의해 자동으로 60분마다 수집 / 7일간 유지 (Default)
- MMON 에 의해 자동으로 삭제
- Snapshot : Set of performance statistics captured at a certain time
- Baseline : Set of Snapshots
AWR 수록 내용
- Base Statistics
- Metrics
- Active Session History
- Advisor Results
- Snapshot Statistics
- Database Feature Usage


Script
- awrrpt.sql : AWR 관련 Report 생성 Script. (분석은 사용자의 몫)
- awrddrpt.sql (기간비교) : AWR 관련 Report 생성 Script (분석은 사용자의 몫)
- ashrpt.sql : ASH 관련 Report 생성 Script (분석은 사용자의 몫)
- addmrpt.sql : ADDM 관련 Report 생성 Script 분석 및 권고안까지 포함


ADDM Attributes
- STATISTICS_LEVEL = TYPICAL or ALL (Basic으로 설정시 자동 실행 안된다)


ADDM Report
- 하나의 Report 생성

SQL> @?/rdbms/admin/addmrpt

Enter value for begin_snap: 8

Enter value for end_snap: 10

Enter value for report_name:

Generating the ADDM report for this analysis ...

- 기존의 작업물들을 바탕으로 Report 생성

SELECT dbms_advisor.GET_TASK_REPORT(task_name)

FROM   dba_advisor_tasks

WHERE  task_id = (

       SELECT max(t.task_id)

       FROM   dba_advisor_tasks t,

              dba_advisor_log l

       WHERE  t.task_id = l.task_id   AND

              t.advisor_name = 'ADDM' AND

              l.status = 'COMPLETED');



ASH (Active Session History)
- V$SESSION 의 내용중 Active Session 의 내용들을 1초 단위로 ASH Buffer로 복사
- ASH Buffer 는 Shared Pool 안에 존재
- ASH Buffer 에는 V$ACTIVE_SESSION_HISTORY View 가 존재
- CPU 당 2mb 의 크기 사용
- ASH 는 Lock 에 의한 보호 메커니즘이 없으므로 읽기 일관성 보장 안된다.
- V$ACTIVE_SESSION_HISTORY 의 내용은 일정크기를 순환해서 쓰는 Rollng Buffer 방식
- V$ACTIVE_SESSION_HISTORY 의 내용을 Direct Path 방식으로 AWR로 내려쓴다
- AWR 로 내려쓰여진 정보들은 DBA_HIST_ACTIVE_SESSION_HISTORY, WRH$_ACTIVE_SESSION_HISTORY 에서 확인가능
관련 Process
▒ MMON
- 시간이 다 되었을 경우(1시간) 1/10개 Sampling 하여 AWR 내려쓴다
▒ MMNL
- V$SESSION 의 내용을 ASH Buffer 로 채우는 역할
- ASH Buffer 의 내용이 1/3이상 찰 경우 1/10 Sampling 하여 AWR 로 내려쓴다


Oradebug 를 이용한 ASH Dump
SQL> oradebug setmypid
SQL> oradebug dump ashdump 10
SQL> oradebug tracefile_name


V$ACTIVE_SESSION_HISTORY 의 해석


SELECT   sql_id, count(*),
         round(count(*)/sum(count(*)) over (), 2)
pctload

FROM     v$active_session_history

WHERE    sample_time > sysdate -1/24/60 and

         session_type <> 'BACKGROUND'

GROUP BY sql_id

ORDER BY count(*) desc;


최근 1분안에 수행한 SQL 문중 가장많은 시간(n초)을 사용한 sql_id 와 count(*)[횟수, 시간]

ASH 에서 Count 한 값은 횟수이면서 동시에 시간(n초) 로 해석할 수 있다(Sampling의 단위가 1초이므로)


ASH Report Structure
- Top Events
- Load Profile
- Top SQL
- Top Session
- Top Objects/File/Latches
- Activity Over Time
▒ Slot Count : 1분간 Active Session
▒ Event Count : Sloct Count 별 상위 3지표
반응형

'ORACLE > TUNING' 카테고리의 다른 글

HWM(High Water Mark)란?  (0) 2010.03.31
AWR - Monitoring & Tuning  (0) 2010.03.23
Statspack 생성/삭제/Sanpshot생성  (0) 2010.03.23
[Oracle 물리설계] 제5부 영역감시  (0) 2010.02.11
Oracle Hidden Parameter 란  (0) 2010.01.26
Posted by [PineTree]