描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111573395丛书名: 数据库技术丛书
内容简介
由于Oracle运维管理的专业性门槛较高,导致Oracle运维管理成本增加。在这种情况下,如何深入掌握Oracle,如何提高数据库运维效率成为许多数据库管理者的困扰。尽管国内有关Oracle方面的书籍繁多,但却没有一本真正意义上介绍Oracle数据库运维自动化的书。本书从与Oracle紧密相关的操作系统层面入手,将操作系统架构与Oracle体系有机整合,以逐步深入的方式将Oracle基础理论运用到实际操作中,引导读者在面对故障时找到处理问题的正确方法。同时,结合开放式可扩展的自动化运维体系,将数据库运维工作按需自动化,在保障数据库高性能运行的同时,大大提高了数据库运维工作的效率。
目 录
Contents 目录
前言
篇 基础篇
第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
前言
篇 基础篇
第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
前 言
Preface 前 言为什么要写这本书2008年的某一天,我怀着激动的心情参加了支付宝公司的面试,这次面试让我对国内前沿的数据库自动化运维技术有了初步的认识,对我的职业生涯影响非常大,时刻激励着我以后不管遇到什么困难或者诱惑,Oracle始终都是我追逐的爱好和目标。
在接下来几年的工作中,我较为深入地研究了C语言数据结构、Linux操作系统原理以及Shell(PHP/Java)编程等知识,这些技术能够很好地支撑Oracle运维管理。同时,多年的经验告诉我,对集运维与开发于一体的Oracle运维管理体系来而言,精通一门开发语言是相当有必要的,因为只有这样才可以更为深入地了解数据库与业务程序之间的架构设计,并能够更为精确地把控Oracle管理优化,从而在面对各种疑难问题时找到解决的突破口。
2014年,我有幸与来自支付宝开发团队和淘宝运维团队的伙伴共事,学习交流了来自阿里的系统架构设计及运维管理理念,这使我编写自动化数据库运维书籍的想法更加强烈,并希望通过书籍与大家分享自己多年的工作经验。
本书主要特色由于Oracle运维管理的专业性门槛较高,导致Oracle运维管理成本增加。在这种情况下,如何深入掌握Oracle,如何提高数据库运维效率成为许多数据库管理者的困扰。尽管国内有关Oracle方面的书籍繁多,但却没有一本真正意义上介绍Oracle数据库运维自动化的书。本书从与Oracle紧密相关的操作系统层面入手,将操作系统架构与Oracle体系有机整合,以逐步深入的方式将Oracle基础理论运用到实际操作中,引导读者在面对故障时找到处理问题的正确方法。同时,结合开放式可扩展的自动化运维体系,将数据库运维工作按需自动化,在保障数据库高性能运行的同时,大大提高了数据库运维工作的效率。
本书读者对象根据本书的内容特点,可以将阅读对象分为以下几类:
Oracle数据库管理人员;Oracle数据库开发人员;应用架构师;数据库架构师;系统集成架构师;运维管理维护人员;数据库技术爱好者。
如何阅读本书阅读本书前需要对Oracle基础知识有一定的了解和掌握,只有这样才能保证阅读的畅通性。如果对某些知识点存在困惑,可以查阅Oracle在线官方文档(http://docs.oracle.com)获取帮助。
本书共10章,分为三篇:基础篇、优化篇、方法篇。
基础篇(第1~4章)主要介绍了Linux环境下Oracle内存体系架构的组成和功能,同时对Oracle日志与回滚段内容进行了讲解,在帮助读者深入理解Oracle知识体系的同时,为后续数据库优化及备份恢复打下基础。
优化篇(第5~6章)主要介绍了Oracle SQL优化的原理和思想,并结合CBO优化器对Oracle优化进行探索。其中,SQL优化原理和思想是CBO优化的基础,将两者结合即可提供Oracle数据库优化参考。
方法篇(第7~10章)主要讲解了Oracle备份恢复的原理,以及如何制订符合自身数据库特点的Oracle备份恢复计划。同时,结合自动化运维管理系统、自动化历史分析系统及自动化实时监控系统对数据库自动化运维进行实践,帮助数据库维护人员从大量重复烦琐的运维工作中解放出来,实现高效率、自动化的数据库管理。
勘误和资源由于本人水平有限,编写时间也比较仓促,书中难免有错误或者不准确的地方,在此恳请读者朋友批评指正。你可以将书中的错误发送到Bug勘误表页面中,同时,书中的源码文件也会发布到华章公司的网站上并及时更新。如果有任何疑问或者建议,也欢迎发送邮件到我的邮箱[email protected],期待你们真挚的意见反馈。
致谢感谢Oracle技术社区的支持以及来自BAT等企业的同事和朋友们的技术分享,感谢Oracle小筑以及Unix DBA等技术社区的朋友们,他们包括但不限于李培跃、丁铁球、周操、文智辉、许剑锋、陶卫、贺学兵、周立明、李杰斌、罗炳森、龚明全、蹇波等。
感谢机械工业出版社华章公司的杨福川老师和李艺老师,你们的专业和热情深深地打动了我,让我能够坚持完成本书的编写。同时感谢你们对本书页面排版等方面的建议和支持。
感谢公司的同事和领导,谢谢你们给予我较为充裕的时间来完成本书。
特别感谢我的朋友李亚、李纯香、郑勇斌,谢谢你们对本书的大力支持。需要额外感谢的还有盖国强老师以及冯大辉老师等。
后要感谢我的妻子刘杨及父母对我和孩子的照顾,因为有了你们的理解和支持,才使我有充足的时间和精力来完成本书。
谨以本书献给那些还在追逐、热爱Oracle技术,并依然坚持梦想的朋友们。
冷 菠
在接下来几年的工作中,我较为深入地研究了C语言数据结构、Linux操作系统原理以及Shell(PHP/Java)编程等知识,这些技术能够很好地支撑Oracle运维管理。同时,多年的经验告诉我,对集运维与开发于一体的Oracle运维管理体系来而言,精通一门开发语言是相当有必要的,因为只有这样才可以更为深入地了解数据库与业务程序之间的架构设计,并能够更为精确地把控Oracle管理优化,从而在面对各种疑难问题时找到解决的突破口。
2014年,我有幸与来自支付宝开发团队和淘宝运维团队的伙伴共事,学习交流了来自阿里的系统架构设计及运维管理理念,这使我编写自动化数据库运维书籍的想法更加强烈,并希望通过书籍与大家分享自己多年的工作经验。
本书主要特色由于Oracle运维管理的专业性门槛较高,导致Oracle运维管理成本增加。在这种情况下,如何深入掌握Oracle,如何提高数据库运维效率成为许多数据库管理者的困扰。尽管国内有关Oracle方面的书籍繁多,但却没有一本真正意义上介绍Oracle数据库运维自动化的书。本书从与Oracle紧密相关的操作系统层面入手,将操作系统架构与Oracle体系有机整合,以逐步深入的方式将Oracle基础理论运用到实际操作中,引导读者在面对故障时找到处理问题的正确方法。同时,结合开放式可扩展的自动化运维体系,将数据库运维工作按需自动化,在保障数据库高性能运行的同时,大大提高了数据库运维工作的效率。
本书读者对象根据本书的内容特点,可以将阅读对象分为以下几类:
Oracle数据库管理人员;Oracle数据库开发人员;应用架构师;数据库架构师;系统集成架构师;运维管理维护人员;数据库技术爱好者。
如何阅读本书阅读本书前需要对Oracle基础知识有一定的了解和掌握,只有这样才能保证阅读的畅通性。如果对某些知识点存在困惑,可以查阅Oracle在线官方文档(http://docs.oracle.com)获取帮助。
本书共10章,分为三篇:基础篇、优化篇、方法篇。
基础篇(第1~4章)主要介绍了Linux环境下Oracle内存体系架构的组成和功能,同时对Oracle日志与回滚段内容进行了讲解,在帮助读者深入理解Oracle知识体系的同时,为后续数据库优化及备份恢复打下基础。
优化篇(第5~6章)主要介绍了Oracle SQL优化的原理和思想,并结合CBO优化器对Oracle优化进行探索。其中,SQL优化原理和思想是CBO优化的基础,将两者结合即可提供Oracle数据库优化参考。
方法篇(第7~10章)主要讲解了Oracle备份恢复的原理,以及如何制订符合自身数据库特点的Oracle备份恢复计划。同时,结合自动化运维管理系统、自动化历史分析系统及自动化实时监控系统对数据库自动化运维进行实践,帮助数据库维护人员从大量重复烦琐的运维工作中解放出来,实现高效率、自动化的数据库管理。
勘误和资源由于本人水平有限,编写时间也比较仓促,书中难免有错误或者不准确的地方,在此恳请读者朋友批评指正。你可以将书中的错误发送到Bug勘误表页面中,同时,书中的源码文件也会发布到华章公司的网站上并及时更新。如果有任何疑问或者建议,也欢迎发送邮件到我的邮箱[email protected],期待你们真挚的意见反馈。
致谢感谢Oracle技术社区的支持以及来自BAT等企业的同事和朋友们的技术分享,感谢Oracle小筑以及Unix DBA等技术社区的朋友们,他们包括但不限于李培跃、丁铁球、周操、文智辉、许剑锋、陶卫、贺学兵、周立明、李杰斌、罗炳森、龚明全、蹇波等。
感谢机械工业出版社华章公司的杨福川老师和李艺老师,你们的专业和热情深深地打动了我,让我能够坚持完成本书的编写。同时感谢你们对本书页面排版等方面的建议和支持。
感谢公司的同事和领导,谢谢你们给予我较为充裕的时间来完成本书。
特别感谢我的朋友李亚、李纯香、郑勇斌,谢谢你们对本书的大力支持。需要额外感谢的还有盖国强老师以及冯大辉老师等。
后要感谢我的妻子刘杨及父母对我和孩子的照顾,因为有了你们的理解和支持,才使我有充足的时间和精力来完成本书。
谨以本书献给那些还在追逐、热爱Oracle技术,并依然坚持梦想的朋友们。
冷 菠
评论
还没有评论。