目 录
第一部分 基础原理篇
第1章 理解Oracle数据库和实例 3
1.1 什么是Oracle数据库 3
1.2 Oracle数据库的物理结构 6
1.2.1 Inventory 6
1.2.2 口令文件 9
1.2.3 参数文件 10
1.2.4 控制文件 11
1.2.5 在线日志文件 12
1.2.6 数据文件 12
1.2.7 归档日志文件 12
1.3 实例和多实例数据库 13
1.3.1 什么是数据库实例 13
1.3.2 多实例数据库 16
1.4 数据库后台进程 18
1.4.1 进程结构 19
1.4.2 后台进程的功能作介绍 20
1.4.3 哪些后台进程可以杀 22
1.4.4 是谁在执行SQL 27
第2章 理解DB Cache 31
2.1 什么是DB Cache 33
2.2 DB Cache的分配和DBWR的相关算法 40
2.2.1 DB_WRITER_PROCESSES参数 41
2.2.2 DB Cache的几个主要的链和CKPT算法 43
2.2.3 检索某个DB BLOCK的模拟算法 45
2.3 DB Cache相关的参数闩锁和等待事件 48
2.4 DB Cache优化的一些探讨 51
2.4.1 DB Cache和热块冲突 51
2.4.2 使用KEEP POOL能改善CBC争用吗 54
2.4.3 如何判断DB Cache是否足够 55
2.4.4 DB Cache优化要点 59
第3章 理解共享池 62
3.1 共享池堆的内部结构 64
3.1.1 进一步了解共享池 68
3.1.2 共享池的子池技术 75
3.1.3 字典缓存 78
3.1.4 库缓存和游标 80
3.2 共享池和游标 85
3.2.1 游标与游标共享 86
3.2.2 游标与SQL的执行 90
3.2.3 游标共享和绑定变量 96
3.2.4 OPEN CURSOR和OPEN_CURSORS参数 101
3.2.5 CURSOR_SPACE_FOR_TIME参数 102
3.2.6 SESSION_CACHED_CURSORS参数和OPEN_CURSORS 103
3.2.7 CURSOR_SHARING和游标共享 109
3.2.8 游标的关闭 111
3.2.9 互斥锁和游标 112
3.3 共享池的相关参数 114
3.4 共享池故障处理 115
3.4.1 著名的ORA-4031 116
3.4.2 其他共享池常见故障 125
3.5 共享池优化的主要思路 128
第4章 理解控制文件 130
4.1 控制文件的内部结构 130
4.1.1 控制文件和控制文件事务 130
4.1.2 控制文件自动扩展 132
4.1.3 如何转储和分析控制文件 133
4.1.4 文件头和控制文件信息 135
4.2 故障处理和优化 136
4.2.1 丢失或者损坏控制文件的处理方法 136
4.2.2 控制文件的优化 138
第5章 理解REDO日志 140
5.1 什么是REDO日志 140
5.2 REDO的基本原理 141
5.2.1 介质恢复和实例恢复的基本概念 141
5.2.2 变化矢量和REDO记录 143
5.2.3 日志缓冲和LGWR 149
5.2.4 日志切换和REDO日志文件 152
5.2.5 事务提交和回滚的过程 156
5.3 REDO优化 157
5.3.1 BULK操作能减少REDO吗 157
5.3.2 如何优化LOG FILE SYNC等待事件 166
5.3.3 SHUTDOWN ABORT无害吗 168
5.3.4 关于REDO日志优化的建议 169
第6章 理解UNDO 172
6.1 UNDO的基本原理 172
6.1.1 UNDO表空间和回滚段 173
6.1.2 ITL和UNDO 175
6.1.3 如何转储UNDO 176
6.1.4 UNDO自动管理是如何工作的 177
6.1.5 系统回滚段的作用 178
6.1.6 著名的ORA-1555 179
6.1.7 回滚段手工管理 180
6.2 如何分析和优化UNDO 181
第7章 理解PGA、临时表空间和排序 183
7.1 基本概念 184
7.1.1 临时表空间和临时段 184
7.1.2 PGA和排序 185
7.1.3 PGA和PGA_AGGREGATE_ TARGET 187
7.1.4 你应该知道的PGA自动管理内幕 191
7.2 PGA优化的要点 193
第8章 理解ASM的结构 197
8.1 什么是ASM 197
8.2 ASM的结构 201
8.2.1 ASM DISKHEADER的结构 201
8.2.2 ASM FILE DIRECTORY文件结构 203
8.2.3 ASM ALIAS DIRECTORY文件结构 207
8.2.4 ASM DISK DIRECTORY文件结构 209
8.2.5 从ASM存储结构谈ASM日常维护的要点 210
8.3 如何使用KFED分析和修改ASM数据 211
8.4 如何使用AMDU导出ASM文件 216
第9章 理解数据块结构 224
9.1 理解数据块头结构 224
9.2 理解ITL 227
9.3 理解记录结构 231
9.4 解析Oracle字段的内部数据存储格式 234
9.5 理解LOB的存储结构 241
第10章 理解表的结构 246
10.1 到底什么是“表” 246
10.1.1 PCTFREE和行链 249
10.1.2 那些逝去的老参数 254
10.1.3 减少热块冲突的方法 257
10.2 从数据块结构看目前主流容灾技术 260
10.3 案例——简单任务 265
第11章 理解索引 278
11.1 反转键索引的误区 280
11.2 索引访问的方式 284
11.2.1 小表用索引有意义吗 286
11.2.2 位图索引为什么不适合大并发量环境 287
11.3 重建索引的作用 291
11.4 索引使用的“三大纪律八项注意” 294
11.5 案例——索引危机 296
第12章 理解分区表 305
12.1 什么是分区表 305
12.2 分区表对海量数据的意义 310
12.2.1 分区表和历史数据归档 311
12.2.2 分区表和高水位推进 315
12.2.3 分区表和RAC环境 316
12.2.4 分区主键和分区粒度的选择 317
第13章 理解序列 319
13.1 什么是序列 319
13.2 序列的使用和优化 320
第二部分 分析思路篇
第14章 问题分析综述 324
14.1 如何抓住蝴蝶效应中的那只蝴蝶 325
14.2 为什么要强调基础概念 328
14.3 工作中的好习惯带来的福利 330
第15章 DBA分析思路的探讨 332
15.1 问题分析总路线图 332
15.2 普通故障的分析路线 335
15.3 性能问题的分析路线 340
15.4 SQL语句的分析路线 347
15.5 利用你知道的原理缩小问题的范围 351
15.6 关闭问题的条件 353
15.7 灵活运用你的知识 354
15.8 DBA需要与时俱进 356
15.9 多表连接的优化技巧 359
15.10 理论如何联系实践 364
第三部分 典型案例篇
第16章 RAC故障分析 370
16.1 LOG_ARCHIVE_MAX_PROCESS导致的RAC脑裂 370
16.2 RAC系统故障的处理过程 377
16.3 三天两次严重故障 381
第17章 ORA-600故障 388
17.1 ORA-600 [12700]错误的分析过程 388
17.2 ORA-600 [kdsgrp1]的处理案例 401
第18章 性能问题分析 407
18.1 压力测试遇到的问题 407
18.2 IMP导入性能问题的分析 411
18.3 并行操作为什么无法执行 413
第19章 SQL优化 421
19.1 一个常用的SQL优化方法 421
19.2 一个查找IP所属区域的SQL优化思路 428
结束语 433
· · · · · · (
收起)