贺辞 1
译者序 1
前言 1
第一部分 管理数据库的规模、性能和紧急事件 1
第1章 管理数据库的规模、性能和紧急事件 1
1.1 应用程序展开的螺旋周期 1
1.1.1 阶段1:应用程序的初期使用 1
1.1.2 阶段2:硬件升级和优化 2
1.1.3 阶段3:重新展开 3
1.1.4 阶段4:又一个重新展开 3
1.1.5 主要重新展开 5
1.2.1 降低危机水平 6
1.2 规划应用程序展开的螺旋式周期 6
1.2.2 管理资源需求 7
1.2.3 管理硬件问题 8
1.2.4 为未来做准备 9
第二部分 数据库增长的管理 11
第2章 数据库增长的规划 11
2.1 增长配置文件 11
2.1.1 事务相关表 11
2.1.2 应用相关表 12
2.1.3 商业事务处理表 14
2.1.4 临时/接口表 15
2.2 在规划中使用增长配置文件 17
3.1.1 Oracle如何响应OLTP数据访问请求 19
3.1 应用的类型 19
第3章 内存和CPU的优化调整问题 19
3.1.2 Oracle如何响应批数据访问请求 21
3.2 如何计算命中率 22
3.3 影响命中率的因素 23
3.3.1 字典表活动 23
3.3.2 临时段的活动 24
3.3.3 回滚段的活动 24
3.3.4 索引活动 24
3.3.5 表扫描 25
3.3.6 OLTP和批应用类型 25
3.4 内存和CPU的优化调整问题 26
3.5 为应用选择目标命中率 27
3.6 内存和CPU的要求 28
第4章 硬件调整问题 37
4.1 估计磁盘容量需要 37
4.1.1 数据库内部空间 37
4.1.2 Oracle使用的外部空间 38
4.1.3 应用管理空间 40
4.1.4 冗余/应急空间 40
4.2 识别I/O瓶颈 41
4.3 传统的硬件方法 43
4.3.1 文件的独立 43
4.3.2 数据分离 44
4.3.3 使用分区 45
4.4 如何使用RAID技术 51
4.4.1 RAID如何工作 52
4.4.2 什么时候使用数据分离 54
4.4.3 什么时候使用镜像 55
4.4.4 什么时候使用奇偶系统 55
4.4.5 选择RAID配置 56
4.5 课设备和文件系统 57
4.6 支持改变容量需求 59
第5章 管理数据库的内部空间 60
5.1 数据表的类型 60
5.2 管理区间 61
5.2.1 Oracle如何分配区间 61
5.2.2 考虑性能定区间的大小 64
5.3.1 高位标志 68
5.3 管理数据表 68
5.3.2 在块的内部 70
5.3.3 簇 72
5.4 管理索引 73
5.5 管理临时段 76
5.6 管理回滚段 77
5.7 管理自由空间 81
5.8 存储参数参考资料 85
第6章 数据库关闭/启动工具 87
6.1 删除或归档旧的跟踪文件和跟踪日志 87
6.2 重新命名警报日志 88
6.3 产生创建控制文件命令 89
6.4 装订程序包 89
6.5 创建拥有者-对象的位置图 91
6.6 重新计算统计资料 93
6.7 缩小扩展超过最佳值的回滚段 93
6.8 执行关机/启动工具 94
第三部分 优化增长的数据库 95
第7章 性能管理 95
7.1 从哪儿开始 95
7.1.1 确保稳定协调的产品环境 95
7.1.2 应用事务和查询分类 97
7.1.3 着眼棘手的SQL 98
7.1.4 调整特殊的长时间运行的进程和批作业 98
7.2.2 基于开销的优化程序 99
7.2.1 基于规则的优化程序 99
7.2 使用优化程序 99
7.1.5 优化对单个表的访问 99
7.2.3 混合方法 100
7.2.4 选择优化程序 100
7.2.5 实现基于开销的优化程序 100
7.2.6 添加的优化程序目标 103
7.3 下一步往哪儿去 103
第8章 监控 104
8.1 监控类型 104
8.2 Oracle的性能统计数字问题 105
8.2.1 值的范围 106
8.2.2 准确性 106
8.2.3 统计数字视图的性能 106
8.3 收集统计数字 107
8.4 解释统计数字 108
8.4.1 查询处理 108
8.4.2 事务管理 112
8.4.3 内存和CPU的使用 113
8.4.4 数据库管理 115
8.4.5 用户统计数字 118
8.5 企业管理器 119
8.6 开发一个监控计划 121
9.1.1 DB_BLOCK_SIZE 122
9.1 关键的init.ora参数 122
9.1.2 DE_BLOCK_BUFFERS 122
第9章 环境的优化 122
9.1.3 SHARED_POOL_SIZE 123
9.1.4 LOG_BUFFER 123
9.1.6 DB_FILE_MULTIBLOCK_READ_COUNT 124
9.1.7 SORT_AREA_SIZE和SORT_AREA_RETAINED_SIZE 124
9.1.5 DBWR_IO_SLAVES 124
9.2 内存优化 125
9.1.9 ROLLBACK_SEGMENTS 125
9.2.1 全部内存冲突 125
9.1.8 SORT_DIRECT_WRITES 125
9.2.2 设立共享内存 126
9.2.3 设置信号灯 127
9.2.4 管理内存交换 127
9.3 I/O优化 128
9.3.1 实现最优的灵活结构 128
9.3.2 I/O分配 129
9.4 CPU优化 130
9.5 优化应用 131
第10章 解释SQL语句优化 132
10.1 怎样为一个查询生成Explain Plan 132
10.1.1 解释操作次序 136
10.1.2 在SQL*plus里自动产生解释方案 138
10.2 操作 139
10.2.1 在执行路径说明中使用的约定 141
10.2.2 AND-EQUAL 142
10.2.3 BITMAP AND、BITMAP OR和BITMAP MERGE 143
10.2.4 BITMAP CONVERSION 145
10.2.5 BITMAP INDEX 147
10.2.6 CONCATENATION 149
10.2.7 CONNECT BY 151
10.2.8 COUNT 151
10.2.9 COUNT STOPKEY 153
10.2.10 FILTER 154
10.2.11 FOR UPDATE 155
10.2.12 HASH JOIN 156
10.2.13 INDEX RANGE SCAN 157
10.2.14 INDEX UNIQUE SCAN 158
10.2.15 INTERSECTION 159
10.2.16 MERGE JOIN 161
10.2.17 MINUS 162
10.2.18 NESIED LOOPS 163
10.2.19 OUTER JOIN 165
10.2.20 PROJECTION 166
10.2.21 REMOTE 167
10.2.22 SEQUENCE 169
10.2.23 SORT AGGREGATE 170
10.2.24 SORT GROUP BY 170
10.2.25 SORT JOIN 171
10.2.26 SORT ORDER BY 171
10.2.27 SORT UNIQUE 172
10.2.28 TABLE ACCESS BY ROWID 173
10.2.29 TABLE ACCESS CLUSTER 174
10.2.30 TABLE ACCESS FULL 175
10.2.31 TABLE ACCESS HASH 175
10.2.32 UNION 176
10.2.33 VIEW 177
10.3 解释Explain Plan的输出 178
10.4 应用查询调整到进程调整 180
10.5 使用提示 181
10.5.1 ALL_ROWS 181
10.5.2 AND_EQUAL 182
10.5.3 APPEND and NOAPPEND 182
10.5.4 CACHE 182
10.5.5 CHOOSE 182
10.5.6 CLUSTER 183
10.5.7 FIRST_ROWS 183
10.5.8 FULL 183
10.5.11 INDEX 184
10.5.12 INDEX_ASC 184
10.5.13 INDEX_COMBINE 184
10.5.10 HASH_AJ 184
10.5.9 HASH 184
10.5.17 NO_MERGE 185
10.5.16 MERGE_AJ 185
10.5.18 NOCACHE 185
10.5.19 NOPARALLEL 185
10.5.15 INDEX_FFS 185
10.5.14 INDEX_DESC 185
10.5.22 PUSH_SEBQ 186
10.5.21 PARALLEL 186
10.5.23 ROWID 186
10.5.20 ORDERED 186
10.5.27 USE_HASH 187
10.5.26 USE_CONCAT 187
10.5.28 USE_MERGE 187
10.5.29 USE_NL 187
10.5.25 STAR 187
10.5.24 RULE 187
第11章 13个SQL优化技巧 188
11.1 避免无计划的全表扫描 188
11.1.1 使用全表扫描 189
11.1.3 创建索引时遇到的问题 190
11.2 只使用选择性索引 190
11.1.2 怎样确保查询能使用索引 190
11.2.1 测量索引的选择性 191
11.2.2 选择复合索引的主列 192
11.2.3 在复合索引和多个单列索引间做选择 192
11.3 管理多表联结(NESTED LOOPS、MERGE JOINS和HASH JOINS) 193
11.3.1 MERGE JOINS所涉及的步骤 193
11.3.2 MERGE JOIN的优化含义 194
11.3.3 怎样指定只供临时段使用的表空间 195
11.3.4 涉及NESTED LOOPS的步骤 196
11.3.5 NESTED LOOPS联结里驱动表的含义 197
11.3.6 怎样改变联结路径 197
11.3.7 从无选择性规则开始时会发生什么 199
11.3.8 给联结增加更多表时会发生什么 199
11.3.9 怎样索引有多对多关系的数据表 201
11.3.10 哈希(散列)联结 203
11.3.11 哈希(散列)联结的管理问题 204
11.3.12 哈希(散列)联结的性能概述 206
11.3.13 怎样改变数据库的设计以降低联结的数目 207
8.2.4 命名 207
11.3.14 管理联结 209
11.4 管理包含视图的SQL语句 209
11.4.1 提高视图到查询里的集成 210
11.4.2 强制视图保持独立 211
11.5 优化子查询 213
11.5.1 当执行子查询时 214
11.5.2 对返回最大值的子查询的提示 215
11.5.3 如何组合子查询 216
11.5.4 怎样进行存在检查 217
11.6 使用复合的Keys/star查询 219
11.6.1 怎样创建星形图 219
11.6.2 查询星形图 220
11.6.4 怎样创建星形查询执行路径 222
11.6.3 传统的执行路径 222
11.6.5 星形查询的管理问题 223
11.7 适当地索引CONNECT BY操作 224
11.8 限制对远程表的访问 228
11.9 管理对非常巨大的表的访问 230
11.9.1 问题 230
11.9.2 管理数据接近 230
11.9.3 避免没有帮助的索引扫描 231
11.9.4 创建充分索引的表 233
11.9.5 创建哈希(散列)簇 233
11.9.6 如果使用等价查询 233
11.9.7 如果没有办法执行行接近 234
11.9.8 如果空间分配不成问题 234
11.9.9 创建分区表 235
11.10 使用UNION ALL而不是UNION 237
11.9.10 使用并行选项 237
11.11 避免在SQL里使用PL/SQL功能调用 239
11.13 回访优化过程 241
第四部分 先进的优化调整选项 243
第12章 并行选项 243
12.1 并行选项的影响 243
12.2 什么是选择项 243
12.3 并行查询如何工作 244
12.3.1 常规查询处理 244
12.3.2 数据表扫描的并行查询处理 245
12.3.3 排序的并行查询处理 245
12.4 如何管理和优化调整并行查询选择项 247
12.4.1 如何分配查询服务器进程 248
12.4.2 如何管理查询服务器池 248
12.4.3 在数据表层定义并行度 249
12.4.4 使用查询提示强制并行 249
12.4.5 如何监控并行查询选择 250
12.4.6 了解解释方案输出 252
12.4.7 调整并行操作 259
12.4.8 Oracle如何确定并行度 259
12.4.9 选择并行度的技巧 260
12.5 附加的并行选项 261
12.5.1 并行DML 261
12.5.2 并行创建数据表 262
12.5.3 并行创建索引 263
12.5.4 并行数据加载 264
12.5.6 Oracle并行服务器 265
12.5.7 在并行选项中选择 265
12.5.5 并行恢复 265
第13章 新的及改进的优化调整选项 267
13.1 有关性能的变化 268
13.1.1 直方图 268
13.1.2 快速全索引扫描 272
13.1.3 不可恢复和不记录的动作 273
13.1.4 直接路径输出 274
13.1.5 专用的临时表空间 275
13.2 对象管理的变化 276
13.2.1 不限制最大区间数 276
13.1.6 排序直接写 276
13.2.2 重新分配数据表和索引中未使用的空间 277
13.2.3 重建快速索引 279
13.2.4 位图索引 280
13.2.5 用户指定的哈希簇 281
13.2.6 分区 282
13.2.7 存储的触发器 282
13.3 数据库管理的变化 283
13.3.1 可重定尺寸的数据文件 283
13.3.2 可动态改变的init.ora参数 285
13.3.3 表空间合并 286
13.3.4 只读表空间 288
13.3.5 缩小回滚段 288
13.3.6 媒体恢复状态 289
13.3.7 复制 289
13.3.8 Oracle 7.3补充的变化 296
13.3.9 Oracle 8 补充的变化 297
13.3.10 有关复制的问题 299
13.3.11 多线程服务器 299
13.3.12 延迟记录块的清除 300
13.3.13 可伸缩的缓冲区高速缓存 300
13.3.14 展开的RowID格式 301
13.3.15 OID和REF产生器 302
13.4 新的数据库管理实用程序 303
13.4.1 TRACE 303
13.4.2 DB_VERIEY 305
14.3 如果被难住了,怎么办 307
14.2 记录答案 307
14.4 通过的评分等级是什么 307
14.5 时间限制 307
14.1 问题的格式 307
第14章 Oracle数据库管理的实际问题 307
第五部分 数据库管理的实际问题 307
14.6 问题 308
14.7 问题答案表 325
15.1 回答实际问题的关键 327
15.2 实际问题的一般分析 327
第15章 实际问题分析 327
15.3 参考资料 328
15.3.1 综合参考资料 328
15.3.2 备份与恢复 329
15.3.3 资源管理 329
15.3.5 安全性 330
15.3.6 调整与故障排除 330
15.3.4 维护与操作 330
15.3.8 体系结构与选项 331
15.4 问题分析 331
15.3.7 数据管理 331
11.12 管理赋值e淞es 488