第一篇 优化工具篇
第 1 章 dba 优化之路
1.1 学习的建议
1.2 工具推荐
1.3 关于操作系统方面的建议
1.4 关于oracle初始化参数的调整
1.5 关于statspack的若干建议
1.6 关于logmnr在调优中的运用
1.7 关于materialized view在调优中的运用
.1.8 关于stored outline在sql优化中的运用
1.9 用dbms_profiler调优存储过程 8
1.10 优化前的准备工作
1.11 如何对sql进行调整及优化
1.12 表结构优化实例
1.13 如何对session进行跟踪
1.14 基于等待事件的性能诊断方法
1.15 基于资源限制的性能诊断方法
1.16 如何减少共享池的碎片
1.17 监控表及索引的意义
1.18 通过优化sql消除temp表空间膨胀
1.19 理解compress选项在优化上的作用 19
1.20 关于在线重定义table的建议
1.21 关于分区表在数据库设计时的建议
1.22 关于dataguard在高可用方面的建议 20
第 2 章 statspack 高级调整 23
2.1 statspack高级调整译文
2.1.1 top 5 wait events
2.1.2 等待时间快捷参考
2.2 关于latch
第 3 章 statspack 使用的几个误区
3.1 以命中率为主衡量性能问题
3.2 快照的采样时间间隔问题
3.3 以偏概全
3.4 关于timed_statistics参数的设定
3.5 你成了泄密者
第 4 章 tkprof 工具使用简介
4.1 tkprof工具简介
4.2 tkprof工具的使用步骤
4.3 tkprof工具如何分析trace文件 41
第 5 章 使用 oracle 的等待事件检测性能瓶颈
5.1 判断等待事件的相关视图
5.1.1 系统级统计信息v$system_event
5.1.2 会话级统计信息v$session_event
5.1.3 会话详细性能信息 v$session_wait
5.1.4 会话等待事件的相关视图之间的关系
5.2 应该怎么考虑进行优化
5.3 主要等待事件
5.4 案例分析
5.5 小结
5.6 附录
第 6 章 使用 sql_trace/10046 事件进行数据库诊断
6.1 sql_trace及10046事件的基础介绍
6.1.1 sql_trace说明
6.1.2 10046事件说明
6.1.3 获取跟踪文件
6.1.4 读取当前session设置的参数
6.2 案例分析之一
6.2.1 问题描述
6.2.2 检查并跟踪数据库进程
6.2.3 检查trace文件
6.2.4 登录数据库检查相应表结构
6.2.5 解决方法
6.2.6 小结
6.3 案例分析之二
6.3.1 问题描述
6.3.2 drop user出现问题
6.3.3 跟踪问题
6.3.4 问题定位
6.3.5 实际处理
6.3.6 小结
6.4 10046与等待事件
6.4.1 10046事件的使用
6.4.2 10046 与db_file_multiblock_read_count
6.4.3 10046与执行计划的选择
6.4.4 db_file_multiblock_read_count与系统的io能力
6.4.5 小结
第二篇 存储优化篇
第 7 章 表空间的存储管理与优化技术
7.1 表空间的作用与分类
7.2 字典管理表空间
7.2.1 字典管理表空间的特性
7.2.2 字典管理表空间的缺点
7.2.3 字典管理表空间的优化
7.3 本地管理表空间
7.3.1 本地管理表空间的特性
7.3.2 管理位图块的内部结构
7.3.3 本地管理表空间的优点
7.4 段自动管理表空间
7.4.1 段自动管理表空间的特性
7.4.2 位图管理段内部结构
7.4.3 段自动管理表空间的优化
7.5 9i对表空间的管理优化
7.5.1 自动undo管理的表空间
7.5.2 完全本地的临时表空间
7.6 oracle 10g对表空间的优化
7.7 小结
7.8 附录
第 8 章 关于 oracle 数据库中行迁移 / 行链接的问题
8.1 行迁移/行链接的简介
8.2 行迁移/行链接的检测方法
8.3 行迁移/行链接的清除方法
第 9 章 hwm 与数据库性能的探讨
9.1 什么是hwm
9.2 初始创建的table中hwm的不同情况 122
9.3 insert数据时hwm的移动
9.4 hwm对性能的影响
9.5 何时应该降低hwm
9.5.1 对于lmt下的flm
9.5.2 对于assm
9.6 如何降低hwm
9.6.1 move
9.6.2 dbms_redefinition
9.6.3 shrink
9.6.4 小结
9.7 其他几种会移动hwm的操作
9.7.1 insert append
9.7.2 truncate
第 10 章 调整 i/o 相关的等待
10.1 oracle数据库i/o相关竞争等待简介 153
10.2 oracle数据库i/o相关竞争等待的处理方法
10.3 oracle数据库i/o相关的等待事件和相应的解决方法
10.3.1 数据文件相关的i/o等待事件
10.3.2 控制文件相关i/o等待事件
10.3.3 重做日志文件相关的等待事件
10.3.4 高速缓存区相关的i/o等待事件
10.4 小结
第 11 章 oracle 在 solaris 的 vxfs 上的异步 i/o 问题
11.1 vxfs文件系统的简介
11.2 vxfs文件系统上如何启用异步i/o
11.3 如何检测在vxfs文件系统上是否支持异步i/o
11.4 如何查看vxfs文件系统上异步i/o的性能 173
11.5 如何转换vxfs文件系统上数据文件为支持异步i/o的
数据文件
第 12 章 关于 freelists 和 freelist groups 的研究
12.1 什么是freelists
12.2 freelists是否已经过时
12.3 freelists存储在哪里
12.4 有多少种free list
12.5 进程请求空闲块的过程
12.6 块在free list间的移动
12.7 关于free list将导致大量空间浪费的误解
12.8 对于freelists和freelist groups的一个比喻
12.9 与freelists和freelist groups相关的等待事件
第三篇 内存调整篇
第 13 章 自动 pga 管理──原理及优化
13.1 什么是pga内存自动管理
13.2 pga advice功能
13.3 自动pga内存管理相关初始化参数
第 14 章 32bit oracle sga 扩展原理和 sga 与 pga 的制约
关系
14.1 如何识别32bit的oracle
14.2 为何存在1.7gb的限制
14.3 32bit下sga与pga之间的制约关系 207
第 15 章 keep 池和 recycle 池
15.1 oracle的数据缓冲池
15.2 keep池和recycle池
15.2.1 keep池
15.2.2 recycle池
15.3 小结
第 16 章 深度分析数据库的热点块问题
16.1 热点块的定义
16.2 数据缓冲区的结构
16.3 如何确定热点对象
16.4 热点问题的解决
16.5 热点块的其他相关症状
16.6 小结
第 17 章 shared pool 原理及性能分析
17.1 shared pool的基本原理
17.2 shared pool的设置说明
17.2.1 基本知识
17.2.2 shared pool的free list管理
17.2.3 了解x$ksmsp视图
17.3 诊断和解决ora-04031错误
17.3.1 什么是ora-04031错误
17.3.2 内存泄露
17.3.3 绑定变量和cursor_sharing
17.3.4 使用flush shared pool缓解共享池问题
17.3.5 shared_pool_reserved_size参数的设置及作用
17.3.6 其他
17.3.7 模拟ora-04031错误
17.4 library cache pin及library cache lock分析
17.4.1 library cache pin等待事件
17.4.2 library cache lock等待事件
17.5 诊断案例一
17.6 诊断案例二
17.7 小结
第四篇 诊断案例篇
第 18 章 一次性能调整过程总结
18.1 系统环境
18.2 基本的调优过程
18.2.1 db file scattered read
18.2.2 db file sequential read
18.2.3 enqueue
18.2.4 latch free
18.3 小结
第 19 章 电信业 oracle 优化手记
19.1 一条sql语句要运行2年怎么办
19.2 优化的传统定律和新时尚
19.2.1 index和表同一个表空间(过时)
19.2.2 定期重建索引(过时)
19.2.3 裸设备应该取代文件系统(过时)
19.2.4 初始参数设置cursor_sharing = similar(不一定
有效)
19.2.5 初始参数设置fast = true(有效) 289
19.3 联机重做日志的优化
19.3.1 联机重做日志组内创建多个成员
19.3.2 加大redo log的容量
第 20 章 一次诊断和解决 cpu 利用率高的问题分析
20.1 问题的具体描述
20.2 问题的详细诊断解决过程
20.3 小结
第 21 章 一次异常内存消耗问题的诊断及解决
21.1 问题发现
21.2 解决过程
21.2.1 环境介绍
21.2.2 问题现象
21.2.3 对比分析
21.2.4 假设和分析
21.2.5 找到根源
21.2.6 解决问题
21.3 小结
第 22 章 如何捕获问题 sql 解决过度 cpu 消耗问题
22.1 检查当前情况
22.2 使用top工具辅助诊断
22.3 检查进程数量
22.4 登录数据库
22.5 捕获相关sql
22.6 创建新的索引以消除全表扫描
22.7 观察系统状况
22.8 性能何以提高
22.9 小结
第 23 章 一条 sql 导致数据库整体性能下降的诊断及解决
23.1 现象
23.2 诊断与解决
第 24 章 library cache lock 成因和解决方法的探讨
24.1 几个相关的概念
24.1.1 什么是库高速缓存(library cache)
24.1.2 一个sql语句的处理流程
24.1.3 硬分析(hard parse)
24.1.4 软分析(soft parse)
24.1.5 分析树
24.1.6 执行计划
24.2 了解library cache lock 329
24.2.1 几种容易引起library cache lock的情况
24.2.2 几种防患的方法
24.3 解决问题的方法
24.3.1 使用x$kgllk和systemstate事件解决问题
24.3.2 使用v$session和systemstate事件解决问题
24.4 小结
第五篇 sql优化及其他
第 25 章 oracle 数据库优化之索引( index )简介
25.1 索引的作用
25.2 索引管理的常见问题
25.3 索引的管理
25.4 一些索引管理的脚本
第 26 章 cbo 成本计算初探
26.1 建立测试数据
26.2 cbo计算成本原理初探
26.3 初始化参数以及优化器模式对执行计划的影响 371
26.3.1 初始化参数db_file_multiblock_read_count
26.3.2 初始化参数optimizer_index_cost_adj
26.3.3 优化器模式first_rows对执行计划的影响
26.4 小结
第 27 章 bitmap 索引
27.1 bitmap索引的概念
27.2 建立测试例子
27.3 bitmap索引的特点
27.3.1 bitmap索引比b树索引要节省空间
27.3.2 bitmap索引建立的速度比较快
27.3.3 基于规则的优化器无法使用bitmap索引 382
27.3.4 bitmap索引存储null值
27.3.5 通过bitmap索引访问表记录
27.3.6 bitmap索引对批量dml操作只需要索引一次
27.3.7 bitmap索引的锁机制
27.4 bitmap索引的适用范围
27.5 bitmap索引的使用限制
27.6 bitmap join索引简介
第 28 章 翻页 sql 优化实例
28.1 系统环境
28.2 优化效果
第 29 章 使用物化视图进行翻页性能调整
29.1 系统环境
29.2 问题描述
29.3 捕获排序sql语句
29.4 确定典型问题sql
29.5 选择解决办法
29.6 进一步的调整优化
29.7 小结
第 30 章 如何给 large delete 操作提速近千倍
30.1 背景描述
30.1.1 任务描述
30.1.2 数量级统计和描述
30.2 背景知识——bulk binding
30.2.1 什么是bulk binding
30.2.2 bulk binding的优点是什么
30.2.3 如何进行批量绑定(bulk binds) 415
30.3 优化过程详解
30.3.1 第一次优化——处理庞大的in-list操作 420
30.3.2 第二次优化 —— 分段操作
30.3.3 第三次优化 —— 拆分 delete操作
30.3.4 第四次优化——使用forall处理批量作业 424
30.3.5 第五次优化——使用forall + 原子级操作
30.4 小结
第 31 章 web 分页与优化技术 431
31.1 什么是web分页
31.2 表数据普通查询分页
31.3 first_rows对分页的影响
31.4 带排序需求的分页
31.5 分页的速度优化
31.6 分页中的注意事项
31.6.1 真实案例──表中存在union all的视图时,可能
选择错误的执行计划
31.6.2 真实案例──rowid分页中,执行计划的错误选
择与处理
31.6.3 真实案例──使用rownum得到意想不到的结果
31.7 小结
第 32 章 oracle 数据封锁机制研究 457
32.1 数据库锁的基本概念
32.2 oracle多粒度封锁机制介绍
32.2.1 oracle的tx锁(事务锁、行级锁)
32.2.2 tm锁(表级锁)
32.3 oracle 多粒度封锁机制的监控
32.3.1 系统视图介绍
32.3.2 监控脚本
32.4 oracle 多粒度封锁机制示例
32.4.1 操作同一行数据引发的锁阻塞
32.4.2 实体完整性引发的锁阻塞
32.4.3 参照完整性引发的锁阻塞
32.4.4 外键未加索引引发的锁阻塞
32.4.5 部分回滚对锁的影响
32.4.6 锁的排队机制
32.4.7 itl slot不足引发的锁阻塞
32.4.8 bitmap索引引发的锁阻塞
32.4.9 死锁分析
32.4.10 表级锁的使能
32.4.11 row_locking参数
32.5 oracle 多粒度封锁机制总结
· · · · · · (
收起)