목차
이 책을 이용하는 법
1 Oracle Wait Interface 소개 ... 1
   Ratio-based 오라클 튜닝 ... 2
   Cache Hit Ratio는 왜 비효율적인가? ... 3
   Wait Interface 기반의 오라클 튜닝 ... 5
   OWI의 철학 ... 6
   데이터베이스 응답시간 기반의 튜닝 모델 ... 8
   패러다임 이동 ... 11
   요약 ... 13
2 Oracle Wait Interface 구성 요소 ... 15
   대기이벤트(Wait Event)란 무엇인가? ... 16
   OWI 구성요소 ... 17
      V$EVENT_NAME 뷰 ... 18
      V$SYSTEM_EVENT 뷰 ... 20
      V$SESSION_EVENT 뷰 ... 25
      V$SESSION_WAIT 뷰 ... 27
      10046 Trace Event - 확장된 SQL 트레이스 ... 30
        10046 Trace Event 사용법 ... 31
        자신의 세션을 트레이스 하기 ... 32
        다른 사용자의 세션 트레이스 하기 ... 33
        트레이스 파일 찾기 ... 36
        트레이스 파일의 내용 ... 36
   오라클 10g 릴리즈 1에서 도입된 새로운 OWI 뷰들 ... 38
      V$SESSION_WAIT_HISTORY 뷰 ... 38
      V$SYSTEM_WAIT_CLASS 뷰 ... 40
      V$SESSION_WAIT_CLASS 뷰 ... 41
      V$EVENT_HISTOGRAM 뷰 ... 41
      대기이벤트 유형 ... 43
   OWI의 한계점 ... 46
      CPU 통계치 부재(No CPU Statistics) ... 46
      End-to-End 가시성의 부재(No End-to-End Visibility) ... 46
      성능 이력 데이터의 부재(No Historical Data) ... 47
      부정확성(Inaccuracies) ... 47
   요약 ... 49
3 일반적인 대기이벤트들 ... 51
   일반적인 대기이벤트들에 대한 소개 ... 52
      buffer busy waits ... 52
      control file parallel write ... 53
      db file parallel read ... 55
      db file parallel write ... 56
      db file scattered read ... 56
      db file sequential read ... 57
      db file single write ... 58
      direct path read ... 58
      direct path write ... 59
      enqueue ... 60
      free buffer waits ... 61
      latch free ... 62
      library cache pin ... 63
      library cache lock ... 64
      log buffer space ... 65
      log file parallel write ... 65
      log file sequential read ... 66
      log file switch (archiving needed) ... 66
      log file switch (checkpoint incomplete) ... 67
      log file switch completion ... 67
      log file sync ... 68
      SQL*Net message from client ... 68
      SQL*Net message to client ... 69
   오라클 RAC환경에서의 일반적인 대기이벤트 ... 70
      global cache cr request ... 70
      buffer busy global cache ... 71
      buffer busy global cr ... 72
      global cache busy ... 72
      global cache null to x ... 73
      global cache null to s ... 73
      global cache s to x ... 74
      global cache open x ... 74
      global cache open s ... 75
      row cache lock ... 75
   CPU와 기타 통계정보 추적(Tracking) ... 76
   요약 ... 79
4 OWI 모니터링 및 성능 데이터 수집 방법들 ... 81
   왜 성능 데이터의 이력이 중요한가? ... 82
   빠르고 정확한 근본원인(root cause)의 분석 ... 83
   왜 10046 트레이스 이벤트는 성능 데이터 수집기로 적합하지 않은가? ... 84
   왜 Statspack은 성능 데이터수집기로 적합하지 않은가? ... 85
   성능 데이터 수집기로서의 데이터베이스 로그오프 트리거 ... 86
   PL/SQL 프로시저를 이용한 성능 데이터 샘플링 ... 90
      성능 데이터의 소스 ... 91
      샘플링 주기 ... 92
      레파지토리(Repositories) ... 95
      모니터링 대상 이벤트들 ... 96
        db file sequential read 와 db file scattered read ... 98
        latch free ... 99
        direct path read ... 99
        direct path write ... 101
        enqueue ... 102
        buffer busy waits ... 103
        free buffer waits ... 104
        library cache pin ... 104
      장단점 비교 ... 105
   SQL 수행없이 직접 SGA를 액세스하여 성능 데이터 샘플링 하기 ... 106
   요약 ... 106
5 I/O와 관련된 일반적인 대기이벤트 분석 ... 109
   db file sequential read ... 110
      일반적인 원인, 진단 및 조치방법들 ... 111
        인덱스에 대한 순차적 읽기(Sequential Reads) ... 115
        테이블에 대한 순차적 읽기(Sequential Reads) ... 116
        시스템 레벨 진단 ... 117
   db file scattered read ... 118
      일반적인 원인, 진단 및 조치방법들 ... 119
      왜 Full Table Scan을 수행할 때 db file sequential read 대기이벤트가 발생되는가? ... 123
      왜 Full Scan 수행시 MBRC 보다 적은 블록을 요청하는가? ... 124
      DB_FILE_MULTIBLOCK_READ_COUNT (MBRC) 설정 ... 125
      왜 Physical I/O 비용이 비싼가? ... 126
   direct path read ... 127
      일반적인 원인, 진단 및 조치방법들 ... 127
      중요한 파라미터 ... 133
   direct path write ... 135
      일반적인 원인, 진단 및 조치방법들 ... 135
   db file parallel write ... 137
      일반적인 원인, 진단 및 조치방법들 ... 137
   log file parallel write ... 142
      일반적인 원인, 진단 및 조치방법들 ... 142
   control file parallel write ... 145
      일반적인 원인, 진단 및 조치방법들 ... 145
   요약 ... 147
6 락(lock) 관련 대기이벤트 분석 ... 149
   latch free ... 150
      래치(latch)란 무엇인가? ... 150
      래치(latch)와 락(lock)의 차이점 ... 152
      래치 패밀리(latch family) ... 152
      래치 획득(latch acquisition) ... 152
      래치 클래스(latch classification) ... 154
      latch free 대기이벤트가 의미하는 것은 무엇인가? ... 156
      래치 실패 위치(latch miss location) ... 157
      오라클 10g Release 1에서의 래치들 ... 158
      일반적인 원인, 진단 및 조치방법들 ... 158
      shared pool 과 library cache 래치들 ... 159
        shared pool 과 library cache 래치들의 경합 - 파싱(parsing) ... 161
        shared pool 래치에 대한 경합 - 너무 큰 shared pool ... 165
        library cache 래치에 대한 경합 - 높은 버전 카운트(Version Count)를 가진 문장 ... 166
      cache buffers chains 래치들 ... 168
        cache buffers chains 래치에 대한 경합 - 비효율적인 SQL문 ... 171
        cache buffers chains 래치에 대한 경합 - 핫 블록들(Hot Blocks) ... 172
        cache buffers chains 래치에 대한 경합 - 긴 해쉬 체인들(Long Hash Chains) ... 175
      cache buffers lru chain 래치들 ... 176
      row cache objects 래치들 ... 178
   enqueue ... 179
      enqueue 리소스란 무엇인가? ... 179
      enqueue lock이란 무엇인가? ... 183
      enqueue 아키텍처 ... 184
      enqueue 유형과 모드 디코딩(Decoding) ... 185
        일반적인 원인, 진단 및 조치방법들 ... 187
        TX enqueue에 대한 대기(Mode 6) ... 188
        TX enqueue에 대한 대기(Mode 4) - ITL 부족 ... 189
        TX enqueue에 대한 대기(Mode 4) - Unique Key 충돌 ... 191
        TX enqueue에 대한 대기(Mode 4) - 비트맵 인덱스 엔트리 ... 192
        ST enqueue에 대한 대기 ... 192
        TM enqueue에 대한 대기(Mode 3) ... 193
   buffer busy waits ... 194
      일반적인 원인, 진단 및 조치방법들 ... 195
        데이터블록(클래스 1)에 대한 경합(원인코드130) ... 198
        데이터블록(클래스 1)에 대한 경합(원인코드 220) ... 199
        데이터 세그먼트 헤더(클래스 4)에 대한 경합 ... 200
        언두 세그먼트 헤더(클래스 17)에 대한 경합 ... 202
        언두 블록(클래스 18)에 대한 경합 ... 203
        시스템 레벨 진단 ... 203
   요약 ... 206
7 지연과 관련된 일반적인 대기이벤트 분석 ... 207
   log file sync ... 208
      일반적인 원인, 진단 및 조치방법들 ... 208
        높은 커밋 발생률 ... 211
        느린 I/O 서브시스템 ... 212
        커다란 로그 버퍼 ... 213
   log buffer space ... 215
      일반적인 원인, 진단 및 조치방법들 ... 215
        너무 작은 로그 버퍼 ... 215
        느린 I/O 서브시스템 ... 215
   free buffer waits ... 216
      일반적인 원인, 진단 및 조치방법들 ... 216
        비효율적인 SQL문 ... 217
        불충분한 DBWR 프로세스들 ... 218
        느린 I/O 서브시스템 ... 219
        지연된 블록 클린아웃(Delayed Block Cleanout) ... 219
        작은 버퍼 캐쉬 ... 220
   write complete waits ... 220
      일반적인 원인, 진단 및 조치방법들 ... 220
   log file switch completion ... 221
      일반적인 원인, 진단 및 조치방법들 ... 222
   log file switch (checkpoint incomplete) ... 222
      일반적인 원인, 진단 및 조치방법들 ... 223
   요약 ... 223
8 Real Application Clusters 환경에서의 대기이벤트 ... 225
   왜 Real Application Clusters(RAC)의 대기이벤트는 특별한가? ... 226
      Real Application Cluster에서의 글로벌 버퍼 캐쉬 ... 227
        병렬 캐쉬 관리(Parallel Cache Management) ... 227
        CR(Consistent Read) 처리절차 ... 229
        새로운 버퍼 캐쉬 관리방법 ... 230
        Pings와 False Pings ... 231
        캐쉬 퓨전(Cache Fusion) ... 232
        Light Work Rule ... 234
        _fairness_threshold ... 234
   Global Cache 대기들 ... 235
      global cache or request ... 235
      캐쉬 전송에 사용되는 INTERCONNECT를 찾는 방법 ... 236
      올바른 INTERCONNECT 프로토콜을 사용하기 위해 오라클 바이너리를 Relinking 하는 방법 ... 237
      Global Cache 대기 처리절차 ... 238
      Global Cache 통계정보 ... 239
      버퍼 캐쉬내의 PI 버퍼 와 CR 버퍼 복제본을 줄이는 방법 ... 239
      global cache busy ... 240
   오라클 10g에서의 RAC 대기이벤트 강화 ... 241
   Enqueue waits ... 243
      가장 일반적인 enqueue들 ... 243
        CU Enqueue ... 244
        CF Enqueue ... 244
        HW Enqueue ... 246
        PE Enqueue ... 247
        Sequence Enqueues: SQ 와 SV ... 248
        TX Enqueue ... 248
   요약 ... 248
Index ... 249
닫기