Oracle/Tuning2010. 1. 13. 16:04
● Statistics
   ◎ Optimizer Statistics
       - Data
       - System
   ◎ Performance Statistics
       - Activity => Data 1. V$ 누적 -> statspack, AWR
                                2. Metric : 단위 시간당 통계
                                3. Sampled Data(ASH)
                                4. Trace file
                    v$statname : activity 관련 지표 전체를 보여주는 뷰
                    v$sysstat : 인스턴스 시작 이래로 있었던 activity의 누적
                    v$sesstat : 현재 연결중인 각 세션의 activity 누적
                    v$service_stats : 서비스 이름별 time model Activity의 누적
                    v$mystat : 내 세션의 Activity의 누적
       - Waits : v$event_name : 발생가능한 wait의 이름들
                    v$system_event, : 인스턴스 시작이래로 발생한 적인 있는 wait누적
                    v$session_event : 현재 세션의 wait누적
                    v$service_event : 서비스별 wait누적
                    v$session_wait :  현재 세션의 지금 wait의 누적
       - Others :

● Basic Tools
   ◎ EM Page
   ◎ Alert log
       : LOG_CHECKPOINTS_TO_ALERT = true 튜닝시에 도움이 되는 정보가 더 남는다.
   ◎ Trace file + event setting

      - server process

OS] conn system/oracle                                     
SQL> alter session set sql_trace = true;                 --  trace파일을 남기도록 sql_trace파일을 설정
SQL> select * 
         from scott.emp
         where empno = 7788;

SQL> ed trace

-------파일에 들어갈 쿼리-------
select
  d.value||'/'||p.value||'_ora_'||s.spid||decode(t.value,null,'','_'||t.value)||'.trc'
  as trace_file_name
from
  (
  select value
  from v$parameter
  where name = 'instance_name'
  ) p,
  (
  select value
  from v$parameter
  where name = 'user_dump_dest'
  ) d,
  (select value
  from v$parameter
  where name = 'tracefile_identifier'
  ) t,
  (
  select spid
  from v$process
  where addr = (
    select paddr
    from v$session
    where sid = (select sid from v$mystat where rownum = 1)
    )
  ) s
;

SQL> @trace                     -- trace파일을 찾는 쿼리 실행
SQL> !vi 파일명
tkprof를 이용해 위에서 남긴 trace파일을 사람이 보기 좋은 형태의 파일로 남길 수 있다.


   ◎ Dynamic Performance View
      - v$fixed_table을 질의하면 전체 목록을 볼 수 있다.
      - 읽기 일관성을 지원하지 않음.
      - 관련 파라미터 : statistics_level

Wait Events
- Free Buffer Wait
- Latch Free
- Buffer Busy Waits :  동시에 여러 프로세스가 동일 블록에 대해 Insert를 하거나 Update를 하는 경우
- Db File Sequential Read
- Db File Scattered Read : 멀티블록 I/O를 한번 수행할 때마다 물리적인 I/O가 끝나기를 기다리게 되며
- Db File Parallel Write : DBWR이 더티 블록를 기록하기 위한 I/O 요청을 보낸 후 요청이 끝나기를 기다리는 동안 발생하는 이벤트
- Undo Segment Tx Slot : 트랜잭션 슬롯을 얻지 못해 이용 가능한 슬롯이 생기기를 기다릴 때 발생하는 대기 이벤트
- Undo Segment Extension : 현재 undo공간이 없어서 늘리고 있는 중일 때 나타나는 지표
- log file switch completion : 서버 프로세스가 LGWR에 의해 로그 파일 스위치가 끝날 때까지 기다릴 때 발생하는 대기 이벤트

SQL> select * from v$event_name;
SQL> select * from v$session_wait;

parameter1, parameter2, parameter3 의 내용이 있다면 v$session_wait의 p1, p2, p3에 나오는 값이 의미하는 내용이다.


Time Model
: 어느 컴포넌트가 문제인가를 판단할 수 있는 유일한 척도가 time이다.
 DB Time = 실제로 cpu를 쓰는 시간 + wait시간.
 ADDM이 문제를 해결하는데 적용되어 있는 기법
 관련 dynamic views : v$sys_time_model, v$sess_time_model


기타 참고사항

- 10046 event
- 10053 event : optimizer의 결정 과정을 볼 수 있다.

- DBA_* : 읽기 일관성을 보장.

- undo : MVCC(MultiVersion Concurrency Control)를 지원하기 위한 매커니즘

- oradebug

'Oracle > Tuning' 카테고리의 다른 글

Metrics, Alerts and Metric Baselines  (0) 2010.01.14
[펌]SQL*TRACE와 TKPROF  (0) 2010.01.13
Tuning Overview  (0) 2010.01.12
Automatic Performance Management  (0) 2009.12.29
Dynamic Performance View의 이름 / 설명  (0) 2009.12.26
Posted by 자수성가한 부자