서브메뉴

본문

오라클 실무 튜닝과 SQL 패턴 학습
오라클 실무 튜닝과 SQL 패턴 학습
저자 : 주경호
출판사 : 사이텍미디어
출판년 : 2004
ISBN : 8955508328

책소개


이 책은 오라클 정석편과 응용편으로 나누어 구성되어 있다. 정석편에서는 실무 사례를 통한 오라클 튜닝을 위한 원리를, 응용편에서는 실제 업종별 사례를 중심으로 하나의 SQL 문장으로 모든 것을 처리하는 패턴을 학습하게 된다. 개발자 혹은 DBA가 평상시 업무에 있어 항상 참고할 수 있도록 하였다.

- 모든 과정이 실제 실무에서의 사례를 중심으로 설명하고 있다.
- 예제는 국내에서 실제 구현되었던 것들이며 다양한 업종(금융, 통신, 유통, 제조, 건설)의 예를 들고 있다.
- 학원 강의를 통해 수강생들이 필요한 것들에 대한 정확한 파악을 통해 저술되었다.
- 튜닝시 문제의 원인과 내용을 보여준 후 그 해결 방안을 제시하는 형태로 기술되어 있다.
- SQL 튜닝 및 ORACLE의 구조적 튜닝에 대해서도 내부 아키텍처와 관련하여 그림과 함께 자세히 기술이 되어 있다.
- 이 책 한 권을 통해 OCP(오라클 자격증)의 5과목 중 3과목(Admin, PL/SQL, SQL Tuning)을 학습할 수 있도록 서술되어 있다.
- 오라클 버전에 따라 차이가 나는 부분은 버전의 특성별로 포함하였으며, 현존하는 모든 오라클에서 적용할 수 있도록 저술되어 있다.
- Informix, Sybase, MS-SQL, DB2 등 타사의 DBMS에서 공통적으로 사용할 수 있도록 하였다.
- 오라클 운영시 발생할 수 있는 각 상황별 예상되는 문제들에 대해 최적의 솔루션을 제공하고 있으며, 개발자와 DBA의 욕구를 만족하고자 하였다.

목차


PART 1 정석편
Chapter 1 Oracle Structure 1
1.1 SGA 5
1.1.1 SGA란 무엇인가? 5
1.1.2 Shared Pool 6
1.1.3 Data Buffer Cache 13
1.1.4 Redo Log Buffer 16

Chapter 2 Oracle Structure 2
2.1 Background Process 20
2.1.1 DBWR 20
2.1.2 LGWR 23
2.1.3 SMON 24
2.1.4 PMON 26
2.1.5 CKPT 29
2.1.6 RECO 30
2.1.7 LOCK 32
2.2 MTS 34
2.3 Parallel Processing 37
2.3.1 Parallel Processing이란 무엇인가? 37
2.3.2 Dynamic Parallel Processing 38
2.3.3 Static Parallel Processing 47
2.3.4 SQL Loadder의 병렬 처리 58
2.4 LOCK Mechanism 62
2.4.1 LOCK이란 무엇인가? 62
2.4.2 Row Level LOCK 64
2.4.3 Table Level LOCK 70

Chapter 3 About Index
3.1 Index Structure 74
3.1.1 Table Structure 74
3.1.2 Index Structure 84
3.2 B-Tree Index 90
3.2.1 B-Tree Index Structure 90
3.2.2 Index Skew 91
3.2.3 언제 사용해야 하는가? 94
3.3 Function Based Index 96
3.3.1 Function Based Index Structure 97
3.3.2 언제 사용해야 하는가? 100
3.4 Bitmap Index 101
3.4.1 Bitmap Index Structure 103
3.4.2 언제 사용해야 하는가? 108
3.5 Index Scan Method 109
3.5.1 Full Table Scan 110
3.5.2 Index Scan 111
3.5.3 Index Fast Full Scan 114
3.5.4 Index Skip Scan 115
3.6 Index 사용 시 유의사항 119
3.6.1 Suppressing의 주의 120
3.6.2 Not Operator의 정확한 사용법 127
3.6.3 Null Data의 의미와 성능 개선의 사용법 130
3.7 Index 설정 및 추가 시 유의사항 133
3.7.1 기존 혹은 새로 추가된 인덱스가 미치는 영향과 고려사항134

Chapter 4 전체 범위 처리와 부분 범위 처리
4.1 전체 범위 처리와 부분 범위 처리 144
4.1.1 전체 범위 처리란 무엇인가? 145
4.1.2 부분 범위 처리란 무엇인가? 146
4.2 전체 범위 처리의 부분 범위 처리로의 전환 147
4.3 언제, 어떤 처리 방식을 사용해야 하는가? 158

Chapter 5 Join & View
5.1 Nested Loop Join 162
5.1.1 Nested Loop Join이란 무엇인가? 162
5.1.2 Nested Loop Join의 효율적인 사용법 및 주의사항 165
5.2 Sort Merge Join 173
5.2.1 Sort Merge Join이란 무엇인가? 173
5.2.2 Sort Merge Join의 효율적인 사용법 및 주의사항 175
5.3 Hash Join 177
5.3.1 Hash Join이란 무엇인가? 178
5.3.2 Hash Join의 효율적인 사용법 및 주의사항 180
5.4 Outer Join 182
5.4.1 Outer Join이란 무엇인가? 183
5.4.2 Outer Join의 오류 사례와 전략적 사용법 185
5.5 View 189
5.5.1 View란 무엇인가? 190
5.5.2 View를 이용한 성능 개선 사례 191

Chapter 6 Sub Query
6.1 Sub Query 196
6.1.1 Sub Query란 무엇인가? 196
6.1.2 주종 관계를 가지는 Sub Query 198
6.1.3 주종 관계를 갖지 않는 Sub Query 200
6.1.4 주종 관계로의 수행을 위한 방법과 성능 개선 사례 204

Chapter 7 순환 관계의 처리
7.1 순환 관계의 처리 210
7.1.1 순환 관계 처리란 무엇인가? 210
7.1.2 순환 관계를 써야 하는 이유? 212
7.1.3 잘못 사용되고 있는 순환 관계의 사례 213

Chapter 8 SQL Plan & Trace
8.1 SQL Plan 226
8.1.1 SQL Plan이란 무엇인가? 226
8.1.2 SQL Plan의 식별 방법 226
8.2 Trace 239
8.2.1 Trace란 무엇인가? 239
8.2.2 Trace 결과의 식별 방법 242
8.2.3 Trace의 실제 사례를 통한 전체 작업량에 대한 분석과 문제점 돌출 방법 245

Chapter 9 Cluster
9.1 Cluster 262
9.1.1 Cluster란 무엇인가? 262
9.1.2 Cluster가 가지는 장점과 단점 262

Chapter 10 Optimizer & Hint
10.1 Optimize 272
10.1.1 Optimizer란 무엇인가? 272
10.1.2 Rule Base & Cost Base Optimizer의 특징 및구조가 가지는 특성의 이해 274
10.2 Hint 281
10.2.1 Hint란 무엇인가? 281
10.2.2 실무 사례로 알아보는 Hint의 적절한 사용법 284

Chapter 11 Analytic Function
11.1 Analytic Function 302
11.1.1 Analytic Function이란 무엇인가? 302
11.1.2 실무 사례로 알아보는 Analytic Function의 종류와 사용법 302

Chapter 12 Rollup & Cube
12.1 Rollup 322
12.1.1 Rollup이란 무엇인가? 322
12.1.2 실무 사례로 알아보는 Rollup의 적절한 사용법 322
12.2 Cube 328
12.2.1 Cube란 무엇인가? 328
12.2.2 실무 사례로 알아보는 Cube의 적절한 사용법 329

Chapter 13 Pro*C
13.1 Pro*C란? 334
13.2 Pro*C 프로그래밍을 하기 위한 기본 환경 334
13.2.1 Window 환경에서의 Pro*C 사용법 335
13.2.2 Unix 환경에서의 Pro*C 사용법 338
13.3 Pro*C 프로그램의 구조 341
13.4 단일 데이터 추출을 통한 갱신 프로그램 작성 345
13.5 배열을 이용한 데이터 추출과 갱신 프로그램 작성 347
13.6 WEB 프로그램에서의 Pro*C 응용 352

PART 2 응용편
Chapter 14 실무 사례
14.1 Literal SQL의 Static SQL 프로그램으로의 전환 360
14.2 상품별?분류별 판매 내역을 추출하라 364
14.3 일정 기간별 판매 내역과 그에 대한 누적분을 추출하라 370
14.4 한 테이블의 값을 가로 2개의 컬럼으로 분리하여 추출하라 376
14.5 분류별?상품별 판매 내역과 전일 대비 증감분을 추출하라 381
14.6 한 테이블의 값을 가로 N개의 컬럼으로 분리하여 추출하라 388
14.7 사원의 급여별로 순위를 부여하여 추출하라 395
14.8 사원의 일자별 판매 내역과 최근 일주일간의 판매 내역을 누적하여 추출하라 400
14.9 언제 어떤 패턴의 SQL을 작성하는가? 404

Chapter 15 실무 프로젝트
15.1 [금융] 원리금 구하기 408
15.1.1 업무 요건 408
15.1.2 데이터베이스 설계 409
15.1.3 원리금 구하기 [SQL 작성] 427
15.2 [유통] 배차 지정하기 438
15.2.1 업무 요건 438
15.2.2 데이터베이스 설계 439
15.2.3 배달 기사 지정하기 [SQL 작성] 446
15.2.4 배차 지정하기 [SQL 작성] 450
15.2.5 배달 고객 N건별 부분 범위 조회 [SQL 작성] 459
15.3 [통신] 통신 요금 계산하기 467
15.3.1 업무 요건 468
15.3.2 데이터베이스 설계 468
15.3.3 당월 청구 금액 정산하기 [SQL 작성] 476
15.3.4 당월 청구, 입금 내역 정산하기 [SQL 작성] 485
15.4 [건설] 노무비 구하기 493
15.4.1 업무 요건 494
15.4.2 데이터베이스 설계 495
15.4.3 당월, 현장별, 일별 노무비 조회 [SQL 작성] 497

Index 507

QuickMenu