第1章 性能优化的挑战
1.1 为什么要进行性能优化
1.2 编写本书的原因
1.3 本书读者对象
1.4 读者的好消息
1.5 医师到魔术师的方法
1.5.1 可适应性的需要
1.5.2 理解而非技巧
1.5.3 避免猜测
1.5.4 银弹
1.5.5 解决错误问题
1.5.6 揭露一个大秘密
1.5.7 与Oracle保持同步更新
1.6 艺术还是科学
1.7 预优化
1.8 小结
第2章 许多优化策略失败的原因
2.1 失败的策略
2.2 不完善的性能优化方法
2.2.1 银弹方法
2.2.2 偷工减料
2.2.3 快速培训班
2.2.4 偏爱的思想
2.2.5 解决错误的问题
2.2.6 猜测法
2.2.7 避免责备
2.2.8 其他障碍
2.3 小结
第3章 Oracle医师
3.1 定义问题
3. 1. 1 确定需求
3.1.2 定义需求的艺术
3.1.3 切忌孤军奋战
3.1.4 Oracle医生的"就职誓言"
3.1.5 无需太多的技术
3.2 找到主诉症状
3.2.1 "数据库是坏的"
3.2.2 仔细倾听
3.2.3 适时地问一些问题
3.2.4 查看所展示的问题
3.2.5 必要时寻求帮助
3.3 小结
第4章 处理人际关系
4.1 性能优化问题中的人为因素
4.2 DBA的角色
4.2.1 集中解决客户的问题
4.2.2 采取一个积极的方法
4.2.3 建立相互信任的人际关系
4.2.4 准确地报告问题
4.2.5 避免傲慢的态度
4.2.6 承担责任
4.2.7 避免责备
4.2.8 询问问题
4.2.9 接受批评
4.3 小结
第5章 Oracle侦探
5.1 验证问题的存在
5.1.1 问题确实存在吗
5.1.2 检查基本信息
5.1.3 错误消息
5.1.4 在控制环境下重新运行应用程序
5.1.5 检查运行日志
5.1.6 查询V$SQL视图以找到SQL语句
5.1.7 未使用绑定变量所带来的问题
5.1.8 采用工具监控应用程序
5.1.9 监视活动和非活动会话
5.2 量化问题
5. 2. 1 需要关注的问题
5.2.2 方法
5.2.3 生成跟踪文件
5.2.4 计时信息
5.2.5 许可及文件大小
5.2.6 TKPROF
5.3 注意所有异常因素
5.4 小结
第6章 收集更多的线索
6.1 等什么
6.2 等待事件的类型
6.3 视图概述
6.3.1 V$EVENT_NAME
6.3.2 V$SYSTEM_EVEN7
6.3.3 V$SESSION_EVENT
6.3.4 V$SESSION_WAIT
6.4 使用系统事件10046进行跟踪
6.5 等待事件的使用例子
6.6 重要的警告
6.6.1 不是数据库引起的延迟
6.6.2 无法监测CPU时间
6.6.3 没有监测到的逻辑读
6.6.4 时间精确度
6.7 小结
第7章 Oracle病理学家
7.1 隔离根本原因
7.2 找出性能降低的根源
7.2.1 找出真正的原因
7.2.2 性能预算
7.3 简化
7.4 分治法
7.4.1 分化SQL代码
7.4.2 简化表连接
7.5 活动时间表方法
7.6 性能问题的常见原因
7.6.1 应用程序设计
7.6.2 数据库设计
7.6.4 批处理任务的干扰
7.6.5 硬件
7.7 寻找根本原因的其他建议
7.7.1 简单的计时测试
7.7.2 大的结果集
7.8 小结
第8章 分析SQL瓶颈
8.1 SQL优化的作用
8.1.1 SQL分析人员的好消息
8.1.2 SQL分析的其他好处
8.2 使用新的数据库功能
8.2.1 需要重新学习一些内容
8.2.2 更改过程中的稳定性
8.2.3 工具集中的新工具
8.3 从哪儿开始
8.3.1 查看统计数字
8.3.2 产生新的统计数字
8.3.3 确保运行的SQL可实现预期的功能
8.3.4 查看结果集的大小
8.3.5 各种优化过程入口的汇总
8.4 Oracle执行计划
8.4.1 获得执行计划
8.4.2 准备使用EXPLAINPLAN功能
8.4.3 运行EXPLANPLAN语句
8.4.4 执行计划的内容
8.4.5 Oracle提供的其他脚本
8.4.6 使用SQL*PlusAUTOTRACE获得执行计划
8.4.7 解释执行计划
8.5 视图和过滤
8.6 子查询
8.7 SQL优化的其他技巧
8.7.1 对象浏览工具
8.7.2 索引浏览工具
8.7.3 注意全表扫描
8.7.4 不要忽略逻辑读
8.7.5 指导开发人员
8.7.6 考虑缓存效果
8.8 计划表更为高级的功能
8.9 小结
第9章 分析SQL连接
9.1 什么是连接
9.1.1 等值连接和9连接
9.1.2 内连接
9.1.3 外连接
9.2 连接技巧
9.2.1 嵌套循环
9.2.2 排序合并
9.2.3 哈希连接
9.2.4 群集连接
9.3 连接优化
9.3.1 选择合适的连接
9.3.2 SQL提示
9.4 分析连接的图形化方法
9.4.1 显示表和连接条件
9.4.2 列出过滤统计数字
9.4.3 开始连接
9.4.4 继续连接
9.4.5 多个条件
9.4.6 处理到大表的连接
9.5 影响连接的init.ora参数
9.6 其他连接主题
9.6.1 连接远程表
9.6.2 笛卡尔积
9.6.3 数据仓库的特殊连接
9.7 小结
第10章 病理学家的工具箱:其他策略
10.1 分析缓慢的数据库
10.1.1 是否每个人都觉得性能很慢
10.1.2 是否能够将问题归结于一部分原因
10.2 找出最差的症状
10.2.1 监视活动会话
10.2.2 确保没有阻塞会话
10.2.3 彻底检查网络
10.2.4 查看资源消耗大户
10.2.5 磁盘等待时间
10.2.6 查看参数极值的设置
10.2.7 留心分布式查询
10.3 操作系统工具
10.3.1 top
10.3.2 uptime
10.3.3 sar
10.3.4 sar选项
10.3.5 使用Sar查找历史记录
10.3.6 iostat
10.3.7 vmstat
10.3.8 Windows操作系统中的工具
10.4 Oracle Statspack
10.4.1 安装Statspack
10.4.2 使用PERFSTAT快照
10.4.3 运行Statspack报告
10.4.4 报告示例
10.4.5 基础信息
10.4.6 缓存大小
10.4.7 加载简档
10.4.8 实例效率
10.4.9 前五个等待事件
10.4.10 与前台进程相关的所有等待事件
10.4.11 与后台进程相关的所有等待事件
10.4.12 实例统计
10.4.13 表空间统计数字
10.4.14 文件I/O统计数字
10.4.15 缓冲池统计数字
10.4.16 实例恢复统计数字
10.4.17 PGA聚集内存统计数字
10.4.18 PGA内存统计数字
10.4.19 回滚段统计数字
10.4.20 回滚段存储
10.4.21 撤销段摘要
10.4.22 闩锁活动
10.4.23 SGA内存摘要
10.4.24 init.ora参数
10.4.25 删除过时的快照数据
10.4.26 使用Statspack的建议
10.5 其他技巧
10.5.1 Oracle9i对Statspack的改进
10.5.2 后台揭密:快照的实际工作
10.6 小结
第11章 Oracle艺术家
11.1 绘制解决方案
11.1.1 常规解决方案
11.1.2 更为复杂问题的解决方案:特殊的性能策略
11.2 OracleBug
11.2.1 难道处处都有Bug
11.2.2 找出大Bug:报警
11.2.3 TAR的麻烦世界
11.2.4 其他排除Bug的方法
11.3 新的优化选项
11.3.1 DatabaseResourceManager
11.3.2 物化视图
11.3.3 查询改写
11.4 "不可能"的问题
11.4.1 与其他Oracle专业人员联系
11.4.2 咨询系统管理员
11.4.3 Metalink
11.4.4 Oracle论坛
11.4.5 白皮书
11.4.6 有用的Web网站
11.5 小结
第12章 艺术家的调色板
12.1 SQL提示
12.1.1 何时使用SQL提示
12.1.2 如何使用提示
12.1.3 优化器模式提示
12.1.4 表和索引提示
12.1.5 连接提示
12.1.6 特殊的SQL提示
12.1.7 SQL提示疑难解分析
12.1.8 语法注意事项
12.2 PGA自动内存管理
10.2.5 磁盘等待时间
10.2.6 查看参数极值的设置
10.2.7 留心分布式查询
12.2.1 设置PGA目标
12.2.2 PGA目标的优势
12.2.3 使用新的PGA参数
12.2.4 估算PGA需求
12.2.5 特殊的PGA视图
12.2.6 特殊的PGA术语
12.2.7 监视PGA内存优化
12.2.8 计算新的PGA内存目标
12.3 柱状图
12.3.1 柱状图需求
12.3.2 柱状图的样式
12.3.3 Oracle风格的柱状图
12.3.4 生成柱状图的传统方法
12.3.5 生成柱状图的新方法
12.3.6 查看柱状图
12.3.7 柱状图的局限性
12.4 小结
第13章 Oracle魔术师
13.1 设置舞台
13.1.1 测试解决方案
13.1.2 考虑对产品系统的影响
13.1.3 保存现有系统
13.2 挥动魔棒
13.2.1 念动咒语!让所有不满意的用户消失
13.2.2 确定性能变化
13.2.3 检查统计数据
13.2.4 观察意外出现的结果
13.3 如果犯了错
13.3.1 是否是正确的修正
13.3.2 系统如何不同
13.3.3 捕获相关的SQL
13.4 做好收尾工作
13.4.1 将解决方案记录入档
13.4.2 性能改进日志
13.4.3 结束与客户的交流
13.5 下一步操作
13.5.1 公布所学的内容
13.5.2 创建性能公文夹
13.6 小结
第14章 案例分析
14.1 为什么要花时间进行案例分析
14.2 使用案例分析
14.3 小结
附录A 有用的V$视图定义
· · · · · · (
收起)