목차
머리말 ... 16
용어 대역표 ... 19
제1장 애플리케이션 구축을 위한 올바른 접근법
   중요한 것은 팀 노력이다 ... 38
      DBA와 개발자 역할 ... 40
   문서를 읽어라 ... 44
      가이드에 대한 안내 ... 44
      독서 로드 맵 ... 48
   블랙박스 증후군을 피하라 ... 50
      데이터베이스 독립 대 데이터베이스 종속 ... 51
      블랙박스 증후군의 위험 ... 52
   이것은 데이터베이스이지, 데이터 더미가 아니다 ... 66
      기본 키와 외래 키를 사용하라 ... 66
      참조 무결성의 오버헤드를 테스트하라 ... 67
      중간 계층의 검사가 만병 통치약은 아니다 ... 70
   테스트 환경을 구축하라 ... 74
      대표 데이터로 테스트하라 ... 75
      단일 사용자 환경에서 테스트하지 말라 ... 75
      먼지가 없는 연구실에서 테스트하지 말라 ... 80
   성능 향상을 위해서는 튜닝하지 말고 디자인하라 ... 81
      일반적인 데이터 모델을 사용하지 말라 ... 81
      효율성을 염두에 두고 데이터 모델을 디자인하라 ... 85
   처음부터 성능 목표를 정의하라 ... 89
      구체적이고 명확한 메트릭에 따라 작업하라 ... 91
      장기간에 걸쳐 메트릭을 수집하고 기록하라 ... 91
      '모두가 내 임무로 알고 있다'는 이유 때문에 그래서는 안 된다 ... 92
   벤치마크, 벤치마크, 벤치마크 ... 94
      소규모 벤치마킹 ... 95
      대규모 벤치마킹 ... 99
   시스템에 코드를 삽입하라 ... 102
      asktom.oracle.com에 나타난 추적 ... 103
      원격 디버깅을 위한 코드 삽입 ... 105
      아무 곳에나 DBMS_APPLICATION_INFO를 사용하라 ... 106
      PL/SQL에 DEBUG.F를 사용하라 ... 108
      애플리케이션에 SQL_TRACE를 사용하라 ... 109
      산업 표준 API를 사용하라 ... 111
      자신만의 루틴을 작성하라 ... 112
      감사는 욕이 아니다 ... 112
   권위에 도전하라 ... 113
      보편적인 최선책을 조심하라 ... 114
      비율과 기타 신화를 의심하라 ... 115
   지름길을 찾지 말라 ... 118
   단순화하라 ... 120
      대안을 고려하라 ... 120
      데이터베이스가 최선을 다하도록 내버려두자 ... 122
   제공된 기능을 사용하라 ... 125
      기능 X가 느리다고 들었다 ... 126
      기능 X가 복잡하다는 얘기를 들었다 ... 129
      하고 싶지 않다 ... 130
      몰랐다 ... 132
      데이터베이스 독립이 필요하다 ... 132
   요약 ... 135
제2장 성능 틀키트
   SQL*Plus ... 139
      SQL*Plus 설치 ... 140
      SQL*Plus 환경의 정의 ... 141
      문서를 읽자 ... 144
   EXPLAIN PLAN ... 144
      EXPLAIN PLAN 설치 ... 144
      EXPLAIN PLAN을 사용하라 ... 146
      쿼리 계획을 읽는 방법 ... 148
      EXPLAIN PLAN의 함정 회피 ... 152
      DBMS_XPLAN과 V$SQL_PLAN의 사용 ... 156
   AUTOTRACE ... 158
      AUTOTRACE 설치 ... 159
      AUTOTRACE 사용 ... 159
      AUTOTRACE의 출력.포맷 바꾸기 ... 160
      AUTOTRACE 출력 이해하기 ... 162
      AUTOTRACE 출력에서 무엇을 찾고 있는가? ... 164
   TKPROF ... 192
      TKPROF 활성화 ... 193
      TKPROF 실행 ... 194
      TKPROF 보고서 읽기 ... 196
      대중을 위한 TKPROF ... 202
   Runstats ... 210
      Runstats 설치 ... 211
      Runstats 사용 ... 216
   Statspack ... 221
      Statspack 설치 ... 221
      Statspack 사용 ... 223
      Statspack의 오용 ... 224
      한눈에 보는 Statspack ... 225
   DBMS_PROFILER ... 232
      프로파일러를 사용하고자 하는 이유 ... 232
      프로파일러 리소스 ... 235
   JDeveloper(그리고 디버깅) ... 236
   요약 ... 240
제3장 아키텍처와 관련된 결정
   공유 서버 대 전용 서버 연결에 대한 이해 ... 242
      전용 서버 연결은 어떻게 동작하는가? ... 243
      공유 서버 연결은 어떻게 동작하는가? ... 246
      공유 서버 연결에 대한 일반적인 오해 ... 250
      전용 서버 대 공유 서버 요약 ... 252
   클러스터링 이용 ... 253
      RAC는 어떻게 동작하는가? ... 254
      RAC의 이점은 무엇인가? ... 260
      클러스터링 요약 ... 261
   파티셔닝 이용 시기 ... 262
      파티셔닝 개념 ... 263
      파티셔닝 신화 ... 265
      왜 파티셔닝을 사용하는가? ... 271
      파티셔닝 요약 ... 274
   병렬 작업을 사용할 시기 알기 ... 275
      병렬 신화 ... 276
      병렬 관리 ... 280
      병렬 쿼리 ... 282
      병렬 DML ... 285
      DIY 병렬 처리 ... 286
      병렬 처리 요약 ... 289
   요약 ... 290
제4장 효과적인 관리
   SPFILE을 이용하여 데이터베이스 시작하기 ... 292
      PFILE의 문제점 ... 292
      SPFILE의 동작 방법 ... 293
      SPFILE을 사용하도록 데이터베이스 바꾸기 ... 294
      시스템 매개변수의 변경 내용 저장하기 ... 295
      PFILE은 진부한가? ... 295
      도와 주세요, 제 SPFILE이 손상되어 시작할 수 없습니다 ... 296
      SPFILE 요약 ... 299
   데이터 파일의 관리를 오라클에 맡기기 ... 300
      언제 OMF가 유용한가? ... 301
      OMF의 동작 방법 ... 302
      OMF 요약 ... 304
   복구의 방탄화 ... 305
      백업 지침 ... 306
      백업과 복구 요약 ... 310
   지역적으로 관리되는 테이블 영역 사용하기 ... 311
      왜 DMT가 진부한가? ... 312
      객체가 얼마나 커질지 모르는 상황에서는 시스템에 의해 관리되는 LMT를 사용하라 ... 313
      객체의 궁극적인 크기를 알고 있는 경우에는 획일적인 익스텐트 크기를 사용하라 ... 316
      LMT에 관한 몇 가지 주의사항 ... 318
      LMT와 DMT 요약 ... 324
   세그먼트 공간 관리를 오라클에 맡기라 ... 325
      사용 가능 목록과 사용 가능 목록 그룹에 대안 이해 ... 325
      PCTFREE와 PCTUSED가 사용 가능 목록을 제어하는 방법 ... 331
      ASSM의 경우 ... 333
      ASSM 요약 ... 336
   롤백 세그먼트 관리를 오라클에 맡기라 ... 336
      UNDO_RETENTION 설정 ... 337
      UNDO 테이블 영역에 대한 주의사항 ... 340
      UNDO 테이블 영역 요약 ... 342
   요약 ... 342
제5장 문 처리
   SQL 문의 유형에 대한 이해 ... 346
   문은 어떻게 실행되는가? ... 347
      파싱 ... 347
      최적화와 행-원본 생성 ... 355
      실행 ... 357
      문 실행 요약 ... 359
   쿼리의 시작과 끝 ... 360
      신속히 반환하는 쿼리 ... 360
      늦게 반환하는 쿼리 ... 362
      일관된 읽기 ... 365
   수정 DML의 시작과 끝 ... 369
   DDL 처리 ... 371
   바인드 변수의 사용 ... 373
      바인드 변수를 사용하면 무엇이 좋은가? ... 375
      자바와 VB에서 바인드 변수 사용하기 ... 386
      모든 규칙에는 예외가 있다 ... 392
      바인드 변수 조사 ... 397
   가능한 한 적게 파싱하기 ... 402
      파싱 비용 ... 403
      PL/SQL을 사용한 파스 줄이기 ... 407
      트리거로부터 SQL을 옮겨 파싱 줄이기 ... 416
      한 번의 파스와 여러 번의 실행 ... 420
   요악 ... 421
제6장 비용 기반의 최적화기 활용 극대화
   RBO가 사장된 이유 ... 425
   CBO로 하여금 최선을 다 하도록 만들기 ... 428
      OPTIMIZER_INDEX_CACHING과 OPTIMIZER_INDEX_COST_ADJ 매개변수 조정하기 ... 428
      시스템 통계의 사용 ... 433
   CBO 최적화하기 ... 444
      업그레이드에 COMPATIBLE 설정하기 ... 444
      전체 스캔의 비용을 줄이기 위하여 DB_FILE_MULTIBLOCK_READ_COUNT 설정하기 ... 445
      HASH_JOIN_ENABLED를 설정하여 해시 조인 제어하기 ... 450
      OPTIMIZER_DYNAMIC_SAMPLING을 설정하여 동적으로 통계 수집하기 ... 451
      OPTIMIZER_FEATURES_ENABLE을 설정하여 기능 선택하기 ... 459
      OPTIMIZER_MAX_PERMUTATIONS를 설정하여 순열 제어하기 ... 462
      OPTIMIZER_MODE를 설정하여 모드 선택하기 ... 465
      QUERY_REWRITE_ENABLED와 QUERY_REWRITE_INTEGRITY를 이용하여 쿼리 다시쓰기 ... 478
      BITMAP_MERGE_AREA_SIZE, SORT_AREA_SIZE, 그리고 HASH_AREA_SIZE를 이용하여 PGA 메모리 제어하기 ... 486
      스타 쿼리를 위해 STAR_TRANSFORMATION_ENABLED 사용하기 ... 491
      최적화기에 영향을 미치는 기타 매개변수 설정하기 ... 492
   10053 이벤트를 사용하여 CBO 선택 추적하기 ... 493
   요약 ... 499
제7장 효과적인 스키마 디자인
   스키마 디자인 기본 원칙 ... 502
      데이터베이스에 데이터 무결성 시행 맡기기 ... 502
      올바른 데이터 유형을 사용하라 ... 510
      가장 빈번하게 요청되는 질문을 최적화하라 ... 515
   테이블 종류 개요 ... 518
   B*트리 인덱스 클러스터 테이블 ... 519
      클러스터 생성하기 ... 521
      클러스터 사용하기 ... 525
      클러스터 요약 ... 539
   인덱스 조직 테이블(IOT) ... 539
      IOT를 연관 테이블에 대한 공간 절약 대안으로 사용하기 ... 540
      IOT를 사용하여 무작위로 삽입되는 데이터를 한데 모으기 ... 542
      IOT 요약 ... 546
   외부 테이블 ... 547
      외부 테이블 설정 ... 548
      외부 테이블 수정하기 ... 552
      직접 경로 적재에 외부 테이블 사용하기 ... 552
      병렬 직접 경로 적재에 외부 테이블 사용하기 ... 555
      병합에 외부 테이블 사용하기 ... 555
      외부 테이블의 오류 처리하기 ... 557
   인덱싱 테크닉 ... 559
      FBI 사용하기 - 고정관념을 버려라 ... 560
      도메인 인덱스 사용하기 ... 568
   압축 ... 572
      인덱스 키 압축 ... 573
      읽기 전용/준읽기 전용 테이블에 테이블 압축 사용하기 ... 581
      압축 요약 ... 593
   요약 ... 593
제8장 효과적인 SQL
   효율적인 SQL을 작성하는 데 필요한 것 ... 597
   액세스 경로 이해하기 ... 598
      전체 스캔 ... 598
      ROWID 액세스 ... 607
      인덱스 스캔 ... 609
      클러스터 스캔 ... 620
   조인에 대한 이해 ... 620
      중첩된 루프 ... 621
      해시 조인 ... 624
      정렬 병합 조인 ... 628
      데카르트 조인 ... 631
      반 조인 ... 634
      전체 외부 조인 ... 640
   (물리적인) 스키마 문제 ... 643
   SQL 바로 알기 ... 647
      ROWNUM 유사 열 ... 650
      스칼라 하위 쿼리 ... 668
      해석 함수 ... 680
   쿼리를 튜닝하지 말라 ... 705
      질문 이해하기 ... 705
      개념 증명 예 ... 707
   기타 SQL 테크닉 개요 ... 711
   요약 ... 712
제9장 효과적인 PL/SQL 프로그래밍
   왜 PL/SQL인가? ... 716
      PL/SQL은 가장 효율적인 데이터 조작 언어이다 ... 717
      PL/SQL은 이식 및 재사용이 가능하다 ... 719
   가능한 한 적게 작성하라 ... 721
      절차적으로 수행하지 않기 ... 725
      화면에 코드를 맞춰라 ... 727
   패키지를 사용하라 ... 727
      패키지의 이점 ... 727
      종속성 체인 끊기 ... 728
      패키지 요약 ... 735
   정적 SQL을 사용하라 ... 735
      정적 SQL의 이점 ... 735
      동적 SQL을 대체할 기회를 찾아라 ... 736
      정적 SQL 요약 ... 739
   대량 처리 ... 740
      효과가 클 때는 대량 처리를 사용하라 ... 740
      ETL 작업에 대량 처리를 사용하라 ... 743
      대량 처리 요약 ... 750
   데이터 반환하기 ... 750
      참조 커서의 이점 ... 750
      참조 커서를 이용하여 결과 집합을 반환하라 ... 751
   %TYPE과 %ROWTYPE을 사용하라 ... 757
      레코드 유형의 기반을 테이블에 두기 ... 758
      레코드 유형의 기반을 커서에 두기 ... 761
      데이터 유형의 기반을 열에 두기 ... 765
   호출자 권한 이용하기 ... 767
      호출자 권한과 다중 스키마 ... 768
      호출자 권한 루틴의 조건 ... 769
   조회 작업을 효율적으로 수행하라 ... 771
      조회를 위한 단일 행 인출 ... 774
      조회를 위한 대량 처리 ... 777
      조회를 위한 단일 문 작업 ... 780
      조회 요약 ... 781
   자치 트랜잭션을 사용할 때 주의하기 ... 782
      자치 트랜잭션의 조건 ... 782
      자치 트랜잭션은 데이터 무결성에 영향을 끼칠 수 있다 ... 783
   암시적 혹은 명시적 커서를 사용할지 선택하라 ... 786
      단일 행 선택을 위해 암시적 커서 사용하기 ... 786
      제한된 수의 행을 가진 결과 집합에 암시적 커서 사용하기 ... 794
      암시적/명시적 커서 요약 ... 796
   요약 ... 796
제10장 그렇게 사고를 만났다
   무엇이 다른지를 찾는다 ... 800
      오늘부터 내력을 수집하라 ... 804
      탐정 작업 ... 805
   한 번에 한 가지만 변경한다 ... 807
   이 한 가지를 변경하는 데는 충분한 근거가 있어야 한다 ... 808
      목표를 설정하라 ... 809
      가설을 검증하라 ... 809
   변화를 되돌릴 수 있어야 한다 ... 812
   테스트 사례를 작성한다 ... 813
      테스트 사례 요구 사항 ... 814
      가능한 한 테스트 사례를 작게 유지하라 ... 814
   요약 ... 817
부록 : 설치와 몇 가지 스크립트
   BIG_TABLE 설정하기 ... 820
   자주 사용되는 스크립트 ... 822
      PRINT_TABLE ... 823
      SHOW_SPACE ... 826
      COLS_AS_ROWS ... 831
   GEN_DATA ... 840
   찾아보기 ... 843
닫기