사용자 도구

사이트 도구


study:oracle:adv_owi_10g:intro

OWI 소개

작성자

작성자 서동길 (starlits_at_adminschool.net)
작성일 2009년 7월 20일 (최초작성)

OWI 정의

  1. Oracle Wait Interface 에 대한 정의 한다.

오라클 대기현상을 표현하는 3가지 값

  1. 대기회수
  2. 타임아웃회수
  3. 대기시간

응답시간

  1. 응답시간은 서비스시간과 대기시간의 합이다.
  2. Response Time = Service Time + Wait Time

OWI의 특징

  1. OWI는 문제지향적(Problem-Oriented) 이다.
    1. 오라클은 문제가 생길때마다(원하는 자원을 획득하는데 실패할때마다)
      특정 이벤트를 발생하면서 대기함으로써 현재 어떤 문제가 발생했고, 왜 발생했는지를 알려준다.
    2. 이전에는 Buffer cache hit ratio 가 성능진단의 중요 팩터였으나,
      9i 이후를 시점으로 컴퓨터파워(CPU,MEM,IO)가 좋아지면서 더 이상 Buffer cache hit ratio 가 더이상 성능진단의 중요 팩터가 아니다.
  2. OWI는 정량적이다.
    1. OWI는 추축이 아닌 사실숫자에 기반한 성능분석을 가능하게 한다.
  3. OWI는 징후학적이다.
    1. Wait Event 를 통해 오라클 내부의 성능문제를 외부로 드러내어 원인을 추론하고 성능문제를 해결할 수 있다.
    2. 대기이벤트들의 대한 치밀한 분석과 내부구조에 대한 이해, 경험이 부족하다면 오판을 할 가능성도 존재한다.
  4. OWI는 개선중이다.
    1. OWI는 끊임없이 진보하는 방법론이다.

OWI 툴

OWI 다이나믹 뷰

V$EVENT_NAME 모든 대기이벤트에 대한 참조성 정보
V$SYSTEM_EVENT
V$SESSION_EVENT
V$SESSION_WAIT
V$SESSION_WAIT_HISTORY
V$SYSTEM_WAIT_CLASS
V$SESSION_WAIT_CLASS
V$EVENT_HISTOGRAM

기타 중요 다이나믹 뷰

V$SESSION 세션정보
V$ACTIVE_SESSION_HISTORY
V$PROCESS
V$TRANSACTION
V$LATCH, V$LATCH_PARENT, V$LATCH_CHILDREN, V$LATCH_HOLDER
V$LOCK, V$LOCKED_OBJECT, V$ENQUEUE_LOCK
V$SQL
V$LIBRARYCACHE, X$KGLLK, X$KGLPN
V$ROWCACHE, V$ROWCACHE_PARENT
V$SGASTAT
V$SEGMENT_STATISTICS
V$SESS_TIME_MODEL, V$SYS_TIME_MODEL
V$BH, X$BH

Extended SQL Trace

  1. SQL Trace 는 기본적으로 10046 진단이벤트를 통해 활성화된다.
  2. 4가지 레벨로 제어할 수 있다.
  3. SQL 성능진단을 위해서 SQL Trace 를 할 경우에는 반드시 레벨 12를 사용해야 한다.
레벨 설명
LEVEL 1 SQL문장의 실행정보(Parse,Execute,Fetch 단계 및 Row source operation 결과)만을 제공
LEVEL 4 LEVEL 1 + 바인드 변수값 제공
LEVEL 8 LEVEL 1 + 대기정보 제공
LEVEL 12 LEVEL 4 + LEVEL 8
SQL 문장의 실행정보와 바인드 변수 값, 대기정보를 제공

10046 진단이벤트 활성화 방법

  1. 현재세션에서 작업하고자 하는 경우
  2. dbms_system을 이용해 다른 세션에 대해 Trace를 수행하는 경우
  3. dbms_monitor 패키지를 이용하여 다른 세션에 대해 Trace를 수행하는 경우(10g 부터 제공)
  4. oradebug를 이용해 다른 세션에 대해 Trace를 수행하는 경우

oradebug 와 덤프(dump)

  1. 대기현상들을 분석하고 이해하는데 유용한 툴
  2. oradebug는 DBA를 위한 가장 강력한 툴
  3. oradebug를 반드시 sysdba 권한으로 실행하여야 한다.
  4. oradebug 명령어 확인(help)
    $ sqlplus / AS sysdba
    SQL> oradebug help
  5. 더 자세한 정보는 oradebug 사용법 를 보면 된다.

AWR(Automatic Workload Repository)

  1. 10g 부터 도입된 성능이력관리 기능이다.
  2. 수집된 데이터는 DBA_HIST_XXX 뷰를 통해 조회가 가능하다.

AWR에서 수집되는 데이터들

Active Session History
부하가 큰 문장
시스템 레벨과 세션 레벨에서 Time Model 통계
세그먼트와 기타 데이터베이스 객체에 대한 사용 통계치
V$SESSTAT, V$SYSSTAT, V$SYSTEM_EVENT, V$SESSEION_EVENT 등

제한사항

  1. 오라클 장애는 일반적으로 Active Session은 초당 1회 이상, Active SQL은 초당 수십 회 이상 캡쳐해서 저장할 수 있어야 한다.
  2. AWR 은 데이터를 테이블로 저장하기 때문에 빈번한 데이터 저장이 어려울 수 있다.
  3. AWR에서 스냅샷이 저장되는 주기가 30분인 점을 생각하면 AWR로 특정 시간대의 장애문제를 해석하는 것이 어려울 수도 있다.

OWI 데이타수집

Logoff Trigger

  1. 세션이 로그오프될때 V$SESSION_EVENT, V$SESTAT 뷰 등에 캡쳐해서 저장하는 기법
  2. 단순한 세션을 제외하고는 의미가 없다.

SQL을 이용한 주기적인 수집

  1. 몇 분을 주기로 필요한 OWI 관련 데이터를 SQL문장을 통해 수집하는 기법
  2. 수집주기가 길고, 성능문제 발생시에는 SQL 문장자체가 실행되지 않을 수 있어 정애분석용으로 사용할 수 없다.

AWR(Automatic Workload Repository)

  1. 오라클에 의해 자동적으로 성능데이터가 관리된다.
  2. SQL을 이용한 주기적인 수집보다는 훨씬 가볍고 안정적이지만
    데이터를 저장하는 방식으로 인해 수집주기를 필요한만큼 짧게 할 수 없다.

DMA(Direct Memory Access)

  1. 오라클이 사용하는 SGA영역을 직접 Access 해서 필요한 데이타를 수집하는 방법
  2. AWR과 달리 원하는 데이터를 원하는 주기로 저장할 수 있기 때문에 가장 유연하고 강력한 기법이다.
  3. Maxgauge 등 일부 성능 모니터링 툴에서 이 기법을 이용하여 프로그램을 제공하고 있다.

기타

  1. 추가적으로 알아야 할 내용들이다.

PL/SQL

아래의 패키지 사용법은 어느정도 알고 있어야 한다

  1. dbms_output
  2. dbms_rowid
  3. dbms_job 등

스크립트들

http://asktom.oracle.com 에서 받을 수 있다.

  1. show_space
  2. print_table

기타 스크립트

  1. my_sess_event.sql
  2. show_param.sql
  3. system_event.sql
  4. sesstat.sql
  5. undosize.sql
study/oracle/adv_owi_10g/intro.txt · 마지막으로 수정됨: 2009/07/22 00:42 저자 starlits