前言
第一篇 基础篇
第1章 Linux下的Oracle2
1.1 Linux简介2
1.2 Oracle简介3
1.3 Linux内存体系的优势3
1.4 Linux内存体系与Oracle内存空间5
1.4.1 Linux用户空间与内核空间5
1.4.2 Linux下的Oracle内存体系结构5
1.4.3 Linux下的Oracle内存分配6
1.5 小结9
第2章 Oracle内存体系结构10
2.1 闩(Latch)10
2.1.1 Latch简介10
2.1.2 Latch Level11
2.1.3 Latch获取模式12
2.1.4 Latch获取等待13
2.1.5 Latch资源清理回收15
2.2 队列锁(Enqueue Lock)16
2.2.1 Lock与Latch的区别16
2.2.2 常见的Lock17
2.2.3 Lock相关参数18
2.2.4 Lock先请求先服务机制18
2.3 Library Cache21
2.3.1 Library Cache与SQL游标21
2.3.2 Library Cache内存结构28
2.3.3 Library Cache Lock(Pin)31
2.4 Buffer Cache34
2.4.1 Buffer(Cache)Pool34
2.4.2 Cache Buffer Chain(Latch)37
2.4.3 Cache Buffer Pin40
2.4.4 Buffer Cache等待与优化44
2.5 小结47
第3章 Oracle重做日志(Redo)48
3.1 Redo功能用途48
3.2 Redo组成结构49
3.2.1 Redo Header49
3.2.2 Redo Record49
3.3 Redo产生场景53
3.3.1 Redo与DML事务53
3.3.2 Redo与Block Cleanout55
3.3.3 Redo与Block Write56
3.3.4 Redo与Hot Backup56
3.3.5 Redo与Direct Load56
3.3.6 Redo与Nologging57
3.4 Redo优化58
3.5 小结61
第4章 Oracle事务与回滚段62
4.1 Oracle事务62
4.1.1 Oracle事务概览62
4.1.2 Oracle事务ACID原则63
4.1.3 Oracle事务与回滚段运行机制64
4.2 Oracle回滚段70
4.2.1 回滚段与一致性读70
4.2.2 回滚段与事务锁定71
4.2.3 回滚段与块清除72
4.3 Oracle事务恢复73
4.3.1 回滚操作下的事务恢复73
4.3.2 进程崩溃下的事务恢复74
4.3.3 实例崩溃下的事务恢复75
4.3.4 数据库异常关闭下的事务恢复75
4.4 Oracle回滚段特殊恢复76
4.4.1 Oracle回滚段特殊恢复隐藏参数77
4.4.2 Oracle回滚段特殊恢复场景78
4.4.3 Oracle回滚段特殊恢复实战80
4.5 小结81
第二篇 优化篇
第5章 Oracle SQL优化84
5.1 Oracle SQL游标84
5.1.1 私有SQL游标84
5.1.2 共享SQL游标85
5.1.3 Library Cache中的SQL游标85
5.1.4 SQL游标与Session游标缓存区88
5.2 Oracle SQL解析与执行91
5.2.1 Oracle SQL解析91
5.2.2 Oracle SQL执行93
5.3 Oracle表连接查询96
5.3.1 NESTED LOOPS97
5.3.2 HASH JOIN97
5.3.3 SORT MERGE98
5.4 Oracle统计信息98
5.4.1 默认统计信息98
5.4.2 手动搜集统计信息99
5.5 Oracle直方图102
5.5.1 直方图概要102
5.5.2 直方图优化103
5.6 Oracle提示107
5.6.1 Oracle提示的语法及使用108
5.6.2 Oracle提示失效场景108
5.7 Oracle SQL跟踪109
5.7.1 10046事件跟踪109
5.7.2 SQL跟踪与Tkprof112
5.8 小结113
第6章 Oracle CBO优化114
6.1 CBO优化器模式与CPU成本114
6.1.1 CBO优化器模式114
6.1.2 CBO优化器模式下的执行计划调整115
6.1.3 CPU成本121
6.1.4 CPU成本启用124
6.2 谓词选择率与基数计算124
6.2.1 单谓词选择率与基数计算124
6.2.2 多谓词选择率与基数计算129
6.3 表连接选择率与基数计算132
6.3.1 表连接选择率与基数计算解析132
6.3.2 表连接选择率与基数计算验证134
6.4 Oracle查询转换提示136
6.4.1 dynamic_sampling提示136
6.4.2 leading与ordered提示138
6.4.3 index提示140
6.4.4 index_join提示141
6.4.5 index_ffs提示142
6.4.6 index_ss提示144
6.4.7 index_combine提示145
6.4.8 use_concat提示147
6.4.9 expand与no_expand提示148
6.4.10 merge与no_merge提示148
6.4.11 unnest与no_unnest提示150
6.4.12 push_pred与no_push_pred提示151
6.4.13 push_subq与no_push_subq提示152
6.4.14 pq_distribute提示155
6.4.15 driving_site提示158
6.5 小结159
第三篇 方法篇
第7章 Oracle备份恢复162
7.1 备份恢复与日志记录体系162
7.1.1 Oracle日志记录体系162
7.1.2 Oracle备份恢复与日志记录体系166
7.2 备份恢复与物理文件183
7.2.1 备份恢复与控制文件184
7.2.2 备份恢复与数据文件(头)201
7.2.3 备份恢复与日志文件(头)204
7.3 备份恢复实现205
7.3.1 Shutdown Clean恢复206
7.3.2 Shutdown Abort(Crash)恢复210
7.3.3 冷备恢复213
7.3.4 热备恢复216
7.4 制定RMAN备份恢复计划224
7.4.1 RMAN备份策略制定224
7.4.2 RMAN备份脚本227
7.4.3 RMAN日常备份脚本228
7.5 小结235
第8章 Oracle自动化运维管理系统236
8.1 Oracle自动化查询管理系统236
8.1.1 查询表空间使用情况237
8.1.2 查询Lock锁定信息239
8.1.3 查询事务运行状态240
8.1.4 查询LibraryCache命中率241
8.1.5 查询Bu