第一部分 实例调整 3
第1章 Oracle系统调整基础 3
1.1 系统调整的基本概念 3
1.1.1 系统调整的含义 3
1.1.2 确定系统是否需要调整 3
1.1.3 确定何时停止调整系统 4
1.2 调整目标 4
1.2.1 为提高系统吞吐量的调整 4
1.2.4 为提高系统容错能力的调整 5
1.2.3 为支持众多用户的调整 5
1.2.2 为缩短系统响应时间的调整 5
1.2.5 为缩短数据加载时间的调整 6
1.3 系统调整方法 6
1.3.1 分析问题 7
1.3.2 确定问题 8
1.3.3 确定解决方案和设定系统调整目标 9
1.3.4 确定系统调整目标 10
1.3.5 测试解决方案 10
1.3.6 分析调整结果 11
1.4 影响Oracle服务器性能的因素 11
1.4.1 系统瓶颈 12
1.4.2 调整硬件资源 13
1.4.3 其他调整因素 13
1.4.4 系统限制 14
1.5 设计系统软硬件规模和规划系统能力 14
1.5.1 设计系统软硬件规模和规划系统能力之比较 14
1.5.2 设计系统软硬件规模的步骤 15
1.5.3 规划系统能力的步骤 15
1.6 总结 16
2.1 启动Oracle实例 17
第2章 使用Oracle的配置参数 17
2.1.1 连接Oracle实例 18
2.1.2 使用STARTUP命令启动实例 18
2.1.3 启动Oracle实例 18
2.1.4 确定实例启动过程中的故障 19
2.1.5 关闭Oracle实例 20
2.2 初始化参数 23
2.2.1 与实例调整有关的参数 24
2.2.2 与限制系统资源有关的参数 24
2.3 总结 25
3.1 本章使用的初始化参数 26
第3章 调整Oracle实例 26
3.1.2 程序全局区和用户内存参数 27
3.1.1 SGA参数 27
3.1.3 Undo参数 28
3.1.4 混合参数 28
3.2 调整SGA 29
3.2.1 调整操作系统 29
3.2.2 调整私有SQL区和PL/SQL区 30
3.2.3 调整共享内存池 31
3.2.4 调整数据库缓冲区 34
3.3.1 在SMU模式下调整Undo 39
3.3 管理回滚段和Undo信息 39
3.3.2 在RBU模式下调整Undo 40
3.4 管理重做日志缓冲区 46
3.4.1 重做日志缓冲区的竞争 46
3.4.2 调整检查点 47
3.4.3 优化系统的排序操作 47
3.4.4 调整排序区域 48
3.4.5 调整排序区域的预留尺寸 48
3.4.6 调整临时表空间 48
3.6 总结 49
3.5 降低空闲数据块列表竞争 49
第4章 与提高性能有关的特性 51
4.1 本章需要使用的参数 51
4.2 索引 52
4.2.1 与索引有关的概念 52
4.2.2 索引类型 53
4.2.3 B树索引 53
4.2.4 Oracle位图索引的工作方式 55
4.2.5 选择创建索引的字段 56
4.2.6 如何创建索引 57
4.3 Oracle的并行执行特性 58
4.3.1 并行查询处理 59
4.3.2 并行创建索引 63
4.3.3 并行加载数据 64
4.3.4 并行恢复 64
4.4 簇 65
4.5 散列簇 68
4.6 同时读取多块数据 69
4.7 分区 70
4.7.1 分区的概念 70
4.7.2 按数据范围进行分区 71
4.7.3 List分区方案 72
4.7.4 散列分区方案 73
4.7.5 复合分区方案 73
4.7.6 分区的好处 74
4.7.7 分区和索引 74
4.8 稳定性计划 74
4.9 多线程服务器 75
4.9.1 专用服务器进程 75
4.9.2 多线程服务器进程 76
4.9.3 调整多线程服务器进程 76
4.10 总结 77
第5章 调整系统负载 79
5.1 本章使用的一些参数 79
5.2 使用资源使用者组 79
5.2.1 资源使用者组概述 80
5.2.2 配置资源使用者组 80
5.2.3 监控资源使用者组 83
5.3 调整用户资源 84
5.4 重新部署不同系统的功能 85
5.4.1 部署历史报表 85
5.4.3 支持分布式系统的应用程序 86
5.4.2 部署在线报表 86
5.5 总结 87
第6章 Oracle性能视图 88
6.1 V$视图和G$视图的比较 88
6.2 动态性能视图概述 89
6.3 使用动态性能视图 92
6.3.1 使用查询语句访问动态性能视图 92
6.3.2 使用UTLBSTAT/UTLESTAT工具和Statpack工具 93
6.3.3 使用性能监控工具 94
6.4 总结 95
7.1.1 运行UTLBSTAT和UTLESTAT 96
第7章 使用UTLBSTAT和UTLESTAT 96
7.1 UTLBSTAT和UTLESTAT 96
7.1.2 UTLBSTAT和UTLESTAT的输出文件 97
7.1.3 理解BSTAT和ESTAT的统计数据 97
7.2 Statspack 109
7.2.1 安装Statspack 109
7.2.2 运行Statspack 110
7.2.3 管理Statspack 111
7.2.4 Statspack的输出结果 111
7.3 总结 123
第二部分 Oracle硬件话题 127
第8章 Oracle和系统硬件 127
8.1 本章使用的参数 127
8.2 Oracle实例概述 127
8.2.1 Oracle内存结构 128
8.2.2 Oracle实例中的进程概述 130
8.3 计算机系统结构概述 131
8.3.1 CPU和高速缓冲区 132
8.3.2 CPU的设计 133
8.3.3 系统内存结构 135
8.3.4 设计数据总线 136
8.3.5 I/O总线 137
8.3.6 网络 137
8.3.7 是否使用群集 137
8.4 总结 137
第9章 I/O基本概念 138
9.1 磁盘驱动器 138
9.1.1 I/O子系统概述 138
9.1.2 磁盘驱动器的性能 141
9.1.3 顺序I/O操作的性能 142
9.1.4 随机I/O操作的性能 143
9.2 RAID磁盘子系统 144
9.1.5 关于驱动器I/O的更多考虑 144
9.2.1 硬件RAID和软件RAID的比较 145
9.2.2 磁盘分片 145
9.2.3 RAID0 146
9.2.4 RAID1 146
9.2.5 RAID10 147
9.2.6 RAID2 147
9.2.7 RAID3 148
9.2.9 RAID5 149
9.2.8 RAID4 149
9.2.10 奇偶校验概述 150
9.2.11 RAID性能概述 152
9.2.12 不同RAID级别之间性能的比较 153
9.3 RAID控制器性能特征 153
9.3.1 电梯排序法 154
9.3.2 磁盘控制器缓冲区 154
9.3.3 内外部RAID系统之间的比较 155
9.4 SAN系统 156
9.6 总结 159
9.5 NAS系统 159
第10章 Oracle和I/O 160
10.1 本章使用到的参数 160
10.2 Oracle对I/O的依赖性 161
10.2.1 读操作延迟的重要性 161
10.2.2 写操作延迟 162
10.2.3 容错 163
10.3 为Oracle配置I/O子系统 163
10.3.1 性能、容错能力和经济性 163
10.3.2 保护读者的投资 164
10.4 调整I/O 165
10.4.1 理解磁盘竞争 166
10.4.2 识别磁盘竞争问题 167
10.4.3 解决磁盘竞争问题 168
10.5 降低不必要的I/O开销 172
10.5.1 迁移和链接数据行 172
10.5.2 动态扩展 173
10.5.3 PCTFREE和PCTUSED命令选项 174
10.5.4 关于降低I/O操作技术的回顾 177
10.5.5 块尺寸 177
10.5.6 使用多种块尺寸 178
10.6 磁盘碎片 179
10.7 总结 181
第三部分 应用程序和SQL语句调整 185
第11章 使用EXPLAIN PLAN和SQL Trace 185
11.1 SQL Trace 185
11.1.1 初始化SQL Trace 185
11.1.2 控制SQL Trace 186
11.1.3 SQL Trace的功能 187
11.1.4 TKPROF的功能 187
11.1.5 分析SQL Trace的输出结果 189
11.2 EXPLAIN PLAN命令 193
11.2.1 初始化EXPLAIN PLAN 193
11.2.2 启动EXPLAIN PLAN 194
11.2.3 从EXPLAIN PLAN命令的输出结果中提取信息 195
11.2.4 跟踪应用程序 196
11.3 总结 197
第12章 调整索引 198
12.1 本章使用的参数 199
12.2 索引的类型 199
12.3 使用B树索引 200
12.3.1 创建索引的对象 201
12.3.2 维护索引 202
12.4 IOT 203
12.5 位图索引 203
12.6 基于函数的索引 204
12.7 使用线索 205
12.8 监控和分析索引 205
12.9 总结 205
13.1 理解Oracle优化器 207
13.1.1 Oracle优化器的工作方式 207
第13章 Oracle优化器 207
13.1.2 优化器初始化参数 208
13.1.3 优化方法 209
13.2 使用DBMS_STATS包 211
13.2.1 创建存放统计数据的表 211
13.2.2 收集统计数据 211
13.2.3 删除统计数据 212
13.2.4 恢复统计数据 212
13.2.5 DBMS_STATS包中的其他函数 213
13.2.6 使用统计数据 213
13.3.1 如何运行ANALYZE命令 214
13.3 使用ANALYZE命令 214
13.3.2 数据字典统计数据 216
13.4 事务处理 218
13.5 SQL语句的执行 219
13.5.1 创建游标 219
13.5.2 解析SQL语句 220
13.5.3 执行查询 221
13.5.4 绑定变量 221
13.5.5 执行SQL语句 221
13.5.6 并行化SQL语句的执行 221
13.5.7 向用户返回查询返回的数据记录 222
13.6 分析SQL语句 223
13.7 设计新的SQL语句 224
13.8 使用线索 224
13.9 总结 225
第14章 调整SQL语句 226
14.1 优化SQL语句 226
14.2 如何识别调整不良的SQL语句 226
14.3 连接类型 227
14.3.1 嵌套循环连接 227
14.3.3 散列连接 228
14.3.2 合并连接 228
14.4 调整SQL语句 229
14.4.1 调整已有应用程序 229
14.4.2 设计新应用程序 233
14.5 总结 236
第15章 使用线索 238
15.1 实现线索 238
15.1.1 线索的语法 239
15.1.2 线索错误 239
15.2.1 优化方法 240
15.2 线索 240
15.1.3 使用多条线索 240
15.2.2 关于访问方法的线索 242
15.2.3 与表的连接顺序有关的线索 245
15.2.4 与连接操作有关的线索 245
15.2.5 与并行查询选项有关的线索 246
15.2.6 有关查询转换方式的线索 248
15.2.7 其他线索 249
15.3 总结 251
16.1 RAC概述 255
第16章 Oracle9i实时应用程序群集 255
第四部分 高级话题 255
16.1.1 计算机系统 256
16.1.2 共享磁盘子系统 256
16.1.3 服务器连接 257
16.1.4 锁定数据 257
16.1.5 配置群集 258
16.2 RAC的适用条件 262
16.3 调整RAC 262
16.3.3 应用程序调整 263
16.4 总结 263
16.3.2 实例和锁调整 263
16.3.1 配置和规模 263
第17章 备份和恢复调整 264
17.1 本章使用的参数 265
17.2 Oracle运行方式回顾 265
17.2.1 备份过程 266
17.2.2 恢复过程 266
17.3 Oracle备份过程的特征 266
17.3.2 使用用户管理备份方法对系统进行热(在线)备份 267
17.3.3 使用RMAN工具对系统进行热(在线)备份 267
17.3.1 使用用户管理备份方法对系统进行冷(离线)备份 267
17.3.4 使用SAN提供的功能对系统进行热(在线)备份 268
17.3.5 使用用户管理备份方式时的数据访问模式 268
17.3.6 使用RMAN备份时的数据访问模式 268
17.3.7 备份时的系统负载 269
17.3.8 备份目标 269
17.4 系统设计的考虑 269
17.4.1 数据库冷备份 270
17.4.2 数据库热备份 270
17.4.3 使用用户管理备份方法时的调整考虑 273
17.4.4 使用RMAN备份工具的调整考虑 274
17.5 为提高备份操作的性能而提高系统性能 275
17.5.1 提高CPU的性能 275
17.5.2 提高系统的I/O性能 276
17.5.3 提高网络性能 276
17.5.4 将备份划分成不同的部分 277
17.6 验证备份操作的性能 278
17.6.1 应当测试RDBMS哪些方面的性能 278
17.6.2 应当测试操作系统哪些方面的性能 278
17.7 总结 280
18.2 为什么要制定灾难恢复计划 281
第18章 创建高性能的灾难恢复系统 281
18.1 本章使用的初始化参数 281
18.3 与灾难恢复有关的概念 282
18.3.1 远程镜像 282
18.3.2 Oracle9i数据卫士 283
18.4 制定灾难恢复计划 285
18.4.1 制定灾难恢复计划的步骤 285
18.4.2 将灾难恢复计划形成文档 286
18.4.3 实施灾难恢复计划的方法 286
18.6 调整备份系统 287
18.5 从灾难事件中恢复系统 287
18.7 总结 288
第19章 Oracle的网络性能 289
19.1 网络体系结构 289
19.1.1 硬件层 289
19.1.2 网络协议 291
19.2 调整网络部件 292
19.2.1 软件调整 293
19.2.2 网络设计 293
19.3 总结 295