study:oracle:adv_owi_10g:intro
OWI 소개
작성자
작성자 | 서동길 (starlits_at_adminschool.net) |
작성일 | 2009년 7월 20일 (최초작성) |
OWI 정의
Oracle Wait Interface 에 대한 정의 한다.
오라클 대기현상을 표현하는 3가지 값
응답시간
응답시간은 서비스시간과 대기시간의 합이다.
Response Time = Service Time + Wait Time
OWI의 특징
OWI는 문제지향적(Problem-Oriented) 이다.
오라클은 문제가 생길때마다(원하는 자원을 획득하는데 실패할때마다)
특정 이벤트를 발생하면서 대기함으로써 현재 어떤 문제가 발생했고, 왜 발생했는지를 알려준다.
이전에는 Buffer cache hit ratio 가 성능진단의 중요 팩터였으나,
9i 이후를 시점으로 컴퓨터파워(CPU,MEM,IO)가 좋아지면서 더 이상 Buffer cache hit ratio 가 더이상 성능진단의 중요 팩터가 아니다.
OWI는 정량적이다.
OWI는 추축이 아닌 사실과 숫자에 기반한 성능분석을 가능하게 한다.
OWI는 징후학적이다.
Wait Event 를 통해 오라클 내부의 성능문제를 외부로 드러내어 원인을 추론하고 성능문제를 해결할 수 있다.
대기이벤트들의 대한 치밀한 분석과 내부구조에 대한 이해, 경험이 부족하다면 오판을 할 가능성도 존재한다.
OWI는 개선중이다.
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
SQL Trace 는 기본적으로 10046 진단이벤트를 통해 활성화된다.
4가지 레벨로 제어할 수 있다.
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 진단이벤트 활성화 방법
현재세션에서 작업하고자 하는 경우
dbms_system을 이용해 다른 세션에 대해 Trace를 수행하는 경우
dbms_monitor 패키지를 이용하여 다른 세션에 대해 Trace를 수행하는 경우(10g 부터 제공)
oradebug를 이용해 다른 세션에 대해 Trace를 수행하는 경우
oradebug 와 덤프(dump)
대기현상들을 분석하고 이해하는데 유용한 툴
oradebug는 DBA를 위한 가장 강력한 툴
oradebug를 반드시 sysdba 권한으로 실행하여야 한다.
oradebug 명령어 확인(help)
$ sqlplus / AS sysdba
SQL> oradebug help
-
AWR(Automatic Workload Repository)
10g 부터 도입된 성능이력관리 기능이다.
수집된 데이터는 DBA_HIST_XXX 뷰를 통해 조회가 가능하다.
AWR에서 수집되는 데이터들
Active Session History |
부하가 큰 문장 |
시스템 레벨과 세션 레벨에서 Time Model 통계 |
세그먼트와 기타 데이터베이스 객체에 대한 사용 통계치 |
V$SESSTAT, V$SYSSTAT, V$SYSTEM_EVENT, V$SESSEION_EVENT 등 |
제한사항
오라클 장애는 일반적으로 Active Session은 초당 1회 이상, Active SQL은 초당 수십 회 이상 캡쳐해서 저장할 수 있어야 한다.
AWR 은 데이터를 테이블로 저장하기 때문에 빈번한 데이터 저장이 어려울 수 있다.
AWR에서 스냅샷이 저장되는 주기가 30분인 점을 생각하면 AWR로 특정 시간대의 장애문제를 해석하는 것이 어려울 수도 있다.
OWI 데이타수집
Logoff Trigger
세션이 로그오프될때 V$SESSION_EVENT, V$SESTAT 뷰 등에 캡쳐해서 저장하는 기법
단순한 세션을 제외하고는 의미가 없다.
SQL을 이용한 주기적인 수집
몇 분을 주기로 필요한 OWI 관련 데이터를 SQL문장을 통해 수집하는 기법
수집주기가 길고, 성능문제 발생시에는 SQL 문장자체가 실행되지 않을 수 있어 정애분석용으로 사용할 수 없다.
AWR(Automatic Workload Repository)
오라클에 의해 자동적으로 성능데이터가 관리된다.
SQL을 이용한 주기적인 수집보다는 훨씬 가볍고 안정적이지만
데이터를 저장하는 방식으로 인해 수집주기를 필요한만큼 짧게 할 수 없다.
DMA(Direct Memory Access)
오라클이 사용하는 SGA영역을 직접 Access 해서 필요한 데이타를 수집하는 방법
AWR과 달리 원하는 데이터를 원하는 주기로 저장할 수 있기 때문에 가장 유연하고 강력한 기법이다.
Maxgauge 등 일부 성능 모니터링 툴에서 이 기법을 이용하여 프로그램을 제공하고 있다.
기타
PL/SQL
아래의 패키지 사용법은 어느정도 알고 있어야 한다
dbms_output
dbms_rowid
dbms_job 등
스크립트들
http://asktom.oracle.com 에서 받을 수 있다.
기타 스크립트
my_sess_event.sql
show_param.sql
system_event.sql
sesstat.sql
undosize.sql
study/oracle/adv_owi_10g/intro.txt · 마지막으로 수정됨: 2009/07/22 00:42 저자 starlits