第一篇 Oracle 8i性能设计与优化 3
第一部分 性能优化基础知识 3
1 理解Oracle性能优化 3
1.1 性能优化定义 3
1.2 优化的执行者 7
1.3 设置性能目标 8
1.4 设置用户期望值 8
1.5 性能评价 9
2 性能优化方法 10
2.1 何时优化效率最高 10
2.2 优化的优先步骤 12
2.3 应用优化方法 17
第二部分 设计人员和开发人员的应用程序设计优化技术 20
3 应用程序和系统性能特性 20
3.1 应用程序类型 20
3.2 注册应用程序 24
3.3 Oracle配置 24
4 优化程序 28
4.1 SQL处理体系结构 28
4.2 EXPLAIN PLAN 29
4.3 优化程序的定义 30
4.4 选择优化程序的方法和目标 33
4.5 基于开销的优化程序(CBO,Cost-based Optimizer) 35
4.6 CBO参数 46
4.7 可扩展的优化程序 48
4.8 基于规则的优化程序(RBO,Rule-based Optimizer) 49
4.9 优化程序操作概述 59
4.10 优化联结(Join) 60
4.11 优化使用公共子表达式的语句 70
4.12 表达及条件的评价 72
4.13 转换及优化语句 76
5.1 理解EXPLAIN PLAN 93
5.2 创建输出表 93
5 EXPLAIN PLAN使用说明 93
5.3 显示PLAN_TABLE输出 94
5.4 输出表列 95
5.5 位图索引和EXPLAIN PLAN 99
5.6 EXPLAIN PLAN和分区对象 100
5.7 EXPLAIN PLAN限制条件 106
6 SQL Trace和TKPROF使用说明 108
6.1 理解SQL Trace和TKPROF 108
6.2 使用SQL Trace实用工具和TKPROF 109
6.3 避免TKPROF解释过程中的陷阱 120
6.4 TKPROF输出示例 123
7.1 理解提示 131
7 优化程序提示使用说明 131
7.2 使用提示 134
8 收集统计信息 158
8.1 理解统计信息 158
8.2 产生统计信息 159
8.3 使用统计信息 165
8.4 使用直方图 169
9 优化SQL语句 174
9.1 SQL语句优化的方法 174
9.2 优化目标 183
9.3 最佳常例 186
9.4 SQL优化技巧 191
9.5 使用EXISTS和IN 196
9.6 排除故障 197
9.7 优化分布式查询 197
10 Plan Stability使用说明 208
10.1 利用Plan Stability来保护执行规划 208
10.2 基于开销优化程序的Plan Stability过程 212
第三部分 设计人员和DBA应用设计工具 215
11 诊断工具概述 215
11.1 进行优化的数据源 215
11.3 Oracle和SNMP支持 218
11.2 动态性能视图 218
11.4 EXPLAIN PLAN 219
11.5 SQL Trace和TKPROF 219
11.6 支持的脚本 219
11.7 应用程序注册 220
11.8 Oracle Enterprise Manager、组件和应用程序 220
11.9 Oracle并行服务器管理 224
11.10 独立的工具 224
12 数据访问方法 226
12.1 利用索引的访问方法 226
12.2 利用基于函数的索引的访问方法 233
12.3 利用位图索引的访问方法 234
12.4 利用域索引的访问方法 242
12.5 利用簇的访问方法 243
12.6 利用哈希簇的访问方法 244
13 管理共享SQL和PL/SQL区域 246
13.1 比较SQL语句和PL/SQL块 246
13.2 保留共享池中的共享SQL和PL/SQL 247
14 Oracle Trace使用说明 249
14.1 Oracle Trace介绍 249
14.2 使用Oracle Trace Manager 251
14.3 使用Oracle Trace Data Viewer 252
14.4 人工收集Oracle Trace数据 261
15.1 用于优化的实例层视图 268
15 动态性能视图 268
15.2 用于优化的会话层或瞬态视图 269
15.3 当前的统计值和变化速率 270
16 诊断系统性能故障 272
16.1 现存设计良好系统的优化因素 272
16.2 CPU资源不足 274
16.3 内存资源不足 274
16.4 I/O限制 274
16.6 软件限制 275
16.5 网络限制 275
17 事务模式 276
17.1 使用离散事务 276
17.2 使用串行化事务 279
第四部分 优化实例性能 280
18 优化CPU资源 280
18.1 理解CPU故障 280
18.2 检测和解决CPU故障 282
18.3 通过改变系统体系结构来解决CPU故障 288
19 优化内存分配 291
19.1 理解内存分配问题 291
19.3 解决内存分配故障 292
19.2 检测内存分配故障 292
20 优化I/O 322
20.1 理解I/O故障 322
20.2 检测I/O故障 331
20.3 解决I/O故障 333
21 优化资源争用 366
21.1 理解资源争用问题 366
21.2 检测资源争用故障 366
21.3 解决资源争用故障 367
22 优化网络 381
22.1 理解网络连接模型 381
22.2 检测网络故障 387
22.3 解决网络故障 388
23 优化操作系统 393
23.1 理解操作系统性能问题 393
23.2 检测操作系统故障 395
23.3 解决操作系统故障 395
24 优化实例恢复性能 397
24.1 理解实例恢复 397
24.2 优化实例和崩溃恢复的所用时间 398
24.3 监视实例恢复 400
24.4 优化实例恢复的各阶段 407
1.1 什么是备份和恢复 413
1 什么是备份和恢复 413
第一部分 开发备份和恢复战略 413
第二篇 Oracle 8i备份恢复 413
1.2 对于备份和恢复,哪些数据结构是重要的 416
1.3 理解基本备份策略 420
1.4 理解基本恢复战略 427
2 管理数据结构 431
2.1 数据结构备份和恢复概述 431
2.2 管理控制文件 432
2.3 管理联机重复日志 436
2.4 管理归档重复日志 439
3.1 开发备份战略 445
3 开发备份和恢复战略 445
3.2 开发恢复战略 451
第二部分 实施操作系统备份和恢复 459
4 实施操作系统备份 459
4.1 在实施备份之前列举数据库文件 459
4.2 实施操作系统备份 460
4.3 验证备份 470
4.4 对失败的联机表空间备份的响应 470
4.5 使用输出和输入以补充保护 472
5 实施介质管理 474
5.1 确定要恢复的文件 474
5.2 重建文件 476
5.3 了解基本的介质恢复过程 478
5.4 实施完全介质恢复 486
5.5 实施不完全介质恢复 489
5.6 数据恢复完成后打开数据库 493
6 介质恢复实例 498
6.1 理解介质故障类型 498
6.2 在数据文件丢失以后恢复 498
6.3 通过ADD DATAFILE操作进行恢复 499
6.4 恢复已传送的表空间 500
6.5 在联机重复日志文件丢失后进行恢复 500
6.6 在归档重复日志文件丢失后的恢复 504
6.7 在丢失控制文件后恢复 505
6.9 在分布式环境下实施介质恢复 507
6.8 恢复用户错误 507
7 实施操作系统表空间的时间点恢复 509
7.1 操作系统表空间时间点恢复的介绍 509
7.2 计划表空间时间点恢复 511
7.3 为TSPITR准备数据库 512
7.4 执行TSPITR操作 516
7.5 执行已分区表的局部TSPITR 518
7.6 在分区丢失的情况下执行局部TSPITR 520
7.7 分区分割时执行局部TSPITR 522
7.8 进行TSPITR调整所需要考虑的事项 523
7.9 使用可移动表空间执行TSPITR 524