第1章 ORACLE的物理存储及其管理 1
1.1 tablespace与存储空间 1
1.2 系统表空间与数据字典 2
1.2.1 system和sysaux表空间 2
1.2.2 数据字典(data dictionary) 2
1.3 临时信息与临时表空间 4
1.4 回滚信息与回滚表空间 5
1.4.1 回滚段的分类 6
1.4.2 创建回滚段 6
1.4.3 管理回滚段 7
1.4.4 undo空间及其自动管理 7
1.5 数据库表空间的存储结构 8
1.5.1 表空间的存储关系 8
1.5.2 表空间的存储参数设置 10
1.5.3 表空间的维护 13
1.6 数据库文件管理 15
1.6.1 控制文件的管理 15
1.6.2 数据文件的管理 18
1.6.3 联机日志的配置与管理 26
1.7 OMF方式管理文件 32
1.8 闪回恢复区fra 33
1.8.1 闪回恢复区的作用 34
1.8.2 配置闪回恢复区 34
1.8.3 闪回恢复区的文件保留策略 35
1.8.4 使用闪回恢复区 36
1.9 RAID磁盘阵列存储 37
1.9.1 RAID存储规范 37
1.9.2 ORACLE的RAID存储方案建议 38
第2章 自动存储管理与ASM数据库 40
2.1 自动存储的主要概念 40
2.2 ASM的系统结构 41
2.3 准备ASM存储设备 43
2.3.1 LVM与ASM 43
2.3.2 创建raw device 44
2.3.3 标识ASM磁盘 45
2.4 ORACLE集群同步服务CSS 45
2.5 创建并启动ASM实例 46
2.6 在ASM实例中创建磁盘组 47
2.6.1 磁盘组的冗余级别 47
2.6.2 创建ASM磁盘组 48
2.6.3 在ASM实例中加载磁盘组 49
2.7 ASM实例与RDBMS实例的关系 51
2.8 直接创建ASM数据库 52
2.9 将现有数据库迁移至ASM 53
2.9.1 启用基于磁盘组的OMF 54
2.9.2 迁移控制文件至ASM磁盘组 55
2.9.3 迁移数据文件至ASM磁盘组 56
2.9.4 切换数据库至ASM磁盘组上运行 57
2.9.5 迁移临时表空间 58
2.9.6 迁移联机日志文件 59
2.9.7 关于闪回日志和块跟踪文件 60
2.10 ASM信息与ASM文件管理 61
2.10.1 动态性能视图 61
2.10.2 ASM磁盘文件管理 61
2.10.3 ASM命令行工具 63
第3章 数据块结构 64
3.1 data block描述 64
3.2 data block结构 65
3.3 行链接与行迁移 69
第4章 ITL与事务处理 71
4.1 ITL描述 71
4.2 ITL等待 72
4.3 ITL实验案例 73
4.4 ITL进一步研究 75
4.5 ITL与CR块 79
第5章 数据块损坏的修复 82
5.1 数据块损坏描述 82
5.2 数据块损坏的检测 83
5.2.1 初始化参数设置 83
5.2.2 RMAN检查 84
5.2.3 dbverify工具 85
5.2.4 其他工具检查 86
5.3 数据块损坏的模拟和修复 86
5.3.1 段与存储数据块 86
5.3.2 模拟数据块损坏 89
5.3.3 基于块的数据恢复 92
第6章 dump数据块 95
6.1 block dump描述 95
6.2 dump数据块 96
6.3 dump索引块 102
第7章 系统改变号SCN 106
7.1 SCN描述 106
7.2 SCN与数据恢复 108
7.3 SCN数据恢复案例 109
第8章 伪列pseudo column 112
8.1 伪列描述 112
8.2 常用伪列的研究 112
8.2.1 伪列rowid 113
8.2.2 伪列rownum 114
8.3 伪列ora rowscn研究 116
8.4 伪列level与层次查询 121
第9章 表存储结构与访问优化 126
9.1 存储结构中的块 126
9.1.1 块结构及其控制参数 127
9.1.2 行迁移与行链接 128
9.2 正确设置参数pctfree 128
9.3 避免行迁移与行链接 131
9.3.1 行迁移与行链接的检测 131
9.3.2 行迁移与行链接的消除方法 132
9.4 消除迁移行和链接行实例 133
9.5 高水位线HWM 135
9.6 表存储统计实验 136
9.6.1 验证表结构 136
9.6.2 发现行迁移 137
9.6.3 收集统计信息 137
9.6.4 表分析实验 137
第10章 分区Partition技术 145
10.1 分区Partition概述 145
10.2 表分区的基本类别 146
10.2.1 范围分区(by range) 146
10.2.2 列表分区(by list) 148
10.2.3 散列分区(by hash) 148
10.2.4 间隔分区(by interval) 149
10.3 基本分区的复合 150
10.4 分区索引技术 152
10.4.1 索引分区与表 152
10.4.2 本地分区索引 153
10.4.3 全局分区索引 155
10.5 分区表与索引的维护 157
10.6 分区交换及其应用 164
10.7 联机分区处理 167
第11章 数据访问之多表联接 173
11.1 多表联接概述 173
11.2 联接条件和类型 174
11.2.1 笛卡尔乘积 174
11.2.2 多表的条件联接 175
11.2.3 避免使用子查询 177
11.3 多表联接的方法 178
11.3.1 嵌套循环 178
11.3.2 融合联接 182
11.3.3 哈希联接 184
11.3.4 三种联接方式比较 185
第12章 数据访问之ORACLE索引 187
12.1 ORACLE索引概述 187
12.2 b树索引和bitmap索引 188
12.2.1 b树索引结构 188
12.2.2 bitmap索引结构 189
12.2.3 对null值的索引 190
12.3 聚簇因子 192
12.3.1 计算聚簇因子 192
12.3.2 对访问性能的影响 194
12.4 索引分析与重建 199
12.4.1 索引分析与统计 199
12.4.2 查询索引状态及使用信息 200
12.4.3 索引重建 204
12.5 与索引有关的参数 205
12.6 访问索引的方式 206
12.6.1 索引扫描方式 206
12.6.2 两类数据块扫描 210
12.7 b树索引的维护机制 211
12.7.1 insert操作的b树维护 211
12.7.2 delete操作的b树维护 221
12.7.3 update操作的b树维护 227
12.8 复合索引的使用 228
12.8.1 两个使用原则 228
12.8.2 复合索引和order by 232
12.9 关于索引使用的建议 232
第13章 数据库访问性能的几个基本问题 234
13.1 内存问题 234
13.2 CPU利用率 235
13.3 I/O问题 235
13.4 高资源消耗的SQL 236
13.5 引发性能瓶颈的应用问题 238
13.6 OLTP与OLAP 240
第14章 性能问题的度量手段 242
14.1 性能调优的度量概述 242
14.2 explain解释SQL 242
14.2.1 配置explain 243
14.2.2 获得执行计划 243
14.3 语句级跟踪autotrace 245
14.4 会话级跟踪sql trace 247
14.4.1 设置SQL跟踪 247
14.4.2 tkprof格式化跟踪文件 249
14.5 扩展的SQL跟踪 251
第15章 ORACLE锁机制与锁争用问题 254
15.1 ORACLE数据库的锁类型 254
15.2 数据访问过程中的加锁 256
15.3 与锁有关的字典参数与指令 262
15.3.1 有关锁的数据字典视图 262
15.3.2 有关锁的初始化参数 263
15.3.3 事务的隔离级别 264
15.4 锁争用与死锁 265
15.4.1 量测锁争用 266
15.4.2 处理死锁 267
15.5 锁存器latch 271
15.5.1 锁存器机制 271
15.5.2 检查latch争用 271
第16章 wait与time响应问题 274
16.1 基于wait的性能问题描述 274
16.2 用户响应的时间模型 276
16.2.1 CPU服务时间 276
16.2.2 等待事件及等待时间 277
16.3 统计项与等待事件 278
16.4 db time和db CPU 280
16.5 top SQL说明 281
16.6 等待事件直方图 282
第17章 等待事件接口与性能调整 284
17.1 性能与等待事件 284
17.2 常见的等待事件及其描述 285
17.3 等待事件不能反映的信息 286
17.4 收集等待事件信息 287
17.5 利用等待事件发现性能瓶颈 289
17.5.1 一个慢速查询的处理 289
17.5.2 耗时的调度批处理 292
17.5.3 客户服务器应用中的等待事件 295
17.5.4 疲于应付的数据库服务器 297
17.6 等待事件接口小结 299
第18章 并行处理与访问技术 300
18.1 并行处理技术概述 300
18.2 SQL语句的并行处理 300
18.2.1 串行处理与并行处理 301
18.2.2 并行处理的主要概念 302
18.3 并行处理的性能提升 303
18.4 并行处理的适应性 304
18.4.1 多CPU主机系统 304
18.4.2 分布式存储 305
18.4.3 资源密集型SQL 305
18.4.4 批量数据扫描 306
18.5 控制并行处理 306
18.5.1 确定并行度 306
18.5.2 使用并行提示hint 308
18.5.3 调整与并行处理有关的参数 309
18.6 并行处理的执行计划 310
18.7 实时的并行处理信息 312
18.8 并行处理的跟踪 313
18.9 并行处理实例 314
18.9.1 并行数据更新 314
18.9.2 并行数据添加 315
18.9.3 DDL的并行处理 318
18.9.4 并行索引访问 319
18.10 并行处理的优化 321
18.10.1 并行处理的一般性原则 321
18.10.2 部分并行化与完全并行化 322
18.10.3 监控实际运行中的并行度 325
18.10.4 并行处理进程的负荷分配 326
18.10.5 RAC环境下的并行处理 329
参考文献 330
后记 332