Oracle核心技术.pdf

Oracle核心技术.pdf
 

书籍描述

编辑推荐
Oracle资深专家Johnathan Lewis最新力作DBA和开发者必须了解的Oracle核心机制一本令人震撼、让你大开眼界的必读经典本书浓缩了Oracle的核心技术和精华,系统地介绍了数据库性能问题出现的原因以及背后的核心原理,以深入浅出的方式清晰地阐释了如何识别造成瓶颈的原因、如何优化数据库系统、为什么并发会严重降低性能等,是你解决数据库性能问题的必备工具。

名人推荐
“《Oracle核心技术》是Jonathan Lewis大师的又一本杰作,介绍了Oracle内部核心运作机制,详尽分析了Oracle的事务一致性、底层资源竞争、IO及优化、SQL引擎及优化等内容,必能加深读者对Oracle技术的认知和理解。”-王晓征 浙江移动信息系统部副主任、cn第一批OCM(2003年)“从入门到成为Oracle DBA,在此过程中我们对Oracle数据库的看法与理解不断改变,也逐渐感知到Oracle数据库内核机制的博大精深。本书揭示的Oracle数据库内核机制,为在通往Oracle数据库大师殿堂路上的DBA们提供了一盏指路明灯。” -林志云 福建移动运行维护室经理、cn第一批OCM(2003年)

媒体推荐
“本书中的分析丰富独到可帮助各个层次的读者生动直观地理解Oracle数据库帮助Oracle工程师高效地开展性能诊断和分析工作也可帮助数据库开发人员更好地设计稳定的Oracle数据库应用程序。”-陆进 中国太平洋保险(集团)股份有限公司首席数据库专家 “如果你想深入了解Oracle性能问题而不仅仅是OWI揭示的那点事那么本书非读不可!本书对那些零碎的知识点进行了系统的整合。我读完本书都惊呆了完全没料到它阐述得如此全面!”-诸超 唯品会技术总监著名数据库专家 “本书作者Jonathan Lewis是世界级的Oracle数据库专家他的每一本书都是经典毫无疑问本书也不例外。”-胡昆 中通服网络信息技术有限公司总工程师 “本书是我见过的Oracle数据库内部原理写得最好的一本 没有之一。虽然篇幅不长但字字珠玑很多地方都写得极其深入值得反复回味。相信本书一定能给所有Oracle数据库从业人员带来不一样的体验。” -崔华 Oracle ACE中航信资深Oracle数据库专家《基于Oracle的SQL优化》作者

作者简介
作者简介:
Jonathan Lewis
世界级Oracle资深专家,有20多年Oracle关系数据库管理经验。主要从事自由咨询顾问工作,其Oracle数据库引擎方面的培训课程和研讨会世界闻名。Jonathan曾是UKOUG(UK Oracle User Group)的负责人,他著有多本Oracle方面的畅销书,并维护自己的Oracle技术博客。

译者简介:
杨志洪(网名boypoo)
Oracle ACE、MBA、PMP、ITPUB论坛版主、OOW演讲嘉宾,有十余年电信、银行、保险等大型行业核心系统Oracle数据库运维支持经验,掌握ITIL运维体系,擅长端到端性能优化、复杂问题处理。现主要从事数据架构、高可用及容灾咨询服务。

熊军(网名老熊)
Oracle ACE,ITPUB论坛版主,现从事Oracle第三方技术支持工作,擅长Oracle数据库故障诊断处理和性能优化。
耿永辉(网名老耿)
OCM认证专家,擅长Oracle数据库故障、性能诊断,对Oracle SGA内部数据结构和数据文件存储结构均有深入研究。

目录
第1章 准备开始  1
1.1  Oracle的流程  1
1.2  Oracle实战  4
1.3  小结  4
第2章 redo和undo  5
2.1  基本数据改变  5
2.1.1  数据改变的方法  6
2.1.2  示例  6
2.1.3  任务报告  9
2.1.4  观察总结  10
2.2  ACID  11
2.3  redo复杂度  13
2.4  undo复杂度  18
2.4.1  读一致性  19
2.4.2  回滚  19
2.5  小结  21
第3章 事务与一致性  22
3.1  冲突解决  22
3.2  事务与undo  23
3.2.1  事务的开始与结束  24
3.2.2  事务表  25
3.2.3  undo块回顾  27
3.3  数据块访问与undo  30
3.3.1  设置场景  30
3.3.2  事务列表  31
3.3.3  并发动作  33
3.4  提交SCN  38
3.4.1  提交清除  39
3.4.2  延迟块清除  41
3.4.3  事务表回滚  44
3.5  大对象  48
3.6  小结  49
第4章 锁与闩锁  50
4.1  事情有先有后  50
4.1.1  数组  50
4.1.2  指针  51
4.1.3  链表  51
4.1.4  散列表  53
4.2  闩锁  56
4.2.1  闩锁背后的逻辑  56
4.2.2  闩锁活动统计  59
4.2.3  闩锁可扩展性  63
4.3  锁  64
4.3.1  基础结构  65
4.3.2  V$lock的图形展示  66
4.3.3  死锁  69
4.3.4  锁模式  72
4.3.5  保护锁的闩锁  73
4.3.6  KGL锁(和pin)  75
4.3.7  锁和pin  75
4.4  小结  77
第5章 缓存和复制  79
5.1  内存管理  79
5.1.1  granule  80
5.1.2  granule和缓冲区  81
5.2  多个数据块缓存  83
5.2.1  granule和缓冲池  84
5.2.2  缓冲池  85
5.3  工作集  86
5.4  LRU/TCH算法  88
5.4.1  LRU/TCH实战  89
5.4.2  重新链接缓冲区  90
5.5  REPL_AUX  92
5.6  查找数据  94
5.6.1  pin住缓冲区  96
5.6.2  逻辑I/O  98
5.6.3  更新(update)  99
5.6.4  载入散列链  100
5.6.5  读一致性拷贝  100
5.6.6  物理I/O  101
5.6.7  表扫描  102
5.7  小结  103
第6章 写入和恢复  105
6.1  目标  105
6.2  日志写进程  106
6.2.1  日志写进程写入  108
6.2.2  PL/SQL优化  110
6.2.3  ACID异常  113
6.2.4  提交改进  113
6.2.5  过程  115
6.2.6  重做日志浪费  118
6.2.7  私有重做  119
6.3  数据库写进程  120
6.3.1  缓冲区头部  121
6.3.2  检查点队列  121
6.3.3  增量检查点  123
6.4  数据库写进程的交互  124
6.4.1  数据库写进程与日志写进程  124
6.4.2  数据库写进程和LRU  125
6.4.3  检查点和队列  128
6.4.4  缓冲区头部队列  132
6.4.5  检查点和日志文件  133
6.5  恢复  135
6.5.1  介质恢复  136
6.5.2  备用数据库  137
6.5.3  闪回数据库  137
6.5.4  副作用  138
6.6  小结  139
第7章 解析与优化  141
7.1  理解SQL代码  141
7.1.1  解析  141
7.1.2  优化  142
7.1.3  解释tkprof Summaries  143
7.2  数据字典缓存  145
7.2.1  结构  149
7.2.2  数据字典缓存活动  151
7.3  什么是解析调用  154
7.3.1  Cursor Caching  155
7.3.2  持有游标  157
7.4  库缓存  158
7.4.1  共享池结构  160
7.4.2  精妙的共享池结构  163
7.4.3  那么,行动吧!  168
7.5  解析和优化  170
7.5.1  executing、locking和pinning  173
7.5.2  互斥锁  174
7.6  小结  175
第8章 RAC及“缺陷”  176
8.1  RAC示意图  177
8.2  重点是什么  180
8.2.1  高可用性  180
8.2.2  可扩展性  181
8.2.3  网格  182
8.3  它如何工作  183
8.3.1  全局资源目录  183
8.3.2  Master和Shadow  186
8.3.3  GCS和GES  189
8.3.4  缓存融合  190
8.3.5  后果  193
8.4  恢复  195
8.5  序列  196
8.5.1  缓存序列  197
8.5.2  深入解析序列  197
8.5.3  有序的序列  199
8.5.4  序列和索引  201
8.6  小结  203
附录A  转储与调试  205
词汇表  216
索引  224

文摘
【引言】

在Practical Oracle 8i出版后的第三周,我就收到了询问什么时候出版该书9i版本的邮件——Larry Ellison刚好在这个时候发布了9i版本。过去的12年里,不停有人问我相同的问题,不同的只是版本号。本书基本相当于该书的第二版,仅仅涵盖了第一版的第1章,以及第2章和第3章的少量内容。
有两件事促使我再次提笔写这样一本书。首先,我无数次被问到:Oracle如何用来做某某事?其次,我发现对于这样的问题,很难找到既充分又明确的答案。通常,你只要遍阅Oracle文档,就会找到许多常见问题的答案;只要在网上一搜,就会找到许多介绍Oracle工作原理的文章,却找不到一个全面系统的文档,按正确的顺序进述Oracle的方方面面,让你大体了解Oracle的工作原理以及它为什么只能这样工作。本书要做的就是这件事,即完整讲述Oracle的工作原理。我会系统地讲述,而不是东拼西凑一些细枝末节。
本书目标
本书只有区区两三百页,而11g文档有上万页,所以我似乎不太可能把“整件事”讲清楚,那就事先声明一下。本书讲的是中央数据库引擎的核心机制,这些内容会联动Oracle所有其他内容,主要包括undo、redo、高速缓冲区缓存及共享SQL。即使这样,我仍然不得不舍弃一些细节和有趣的特殊案例,免得本书冗长、臃肿不易阅读。随便举个例子,考虑一个简单的问题:Oracle如何处理一次逻辑I/O?先看看x$kcbsw结构,它包含了Oracle访问一个块可能调用的所有函数。你会发现,对于11.2.0.2版本,做一次逻辑I/O可以调用的函数有1164个之多。你真的希望详细了解这些函数吗?还是说只要大致了解一下一般要求就足够了?
细节问题在不同的层面重复——关于复杂的问题你想了解多少?假如我真的花时间写了些异常复杂的细节,读者会受益多少呢?另外,本书在完整性、精确性和基本的可读性之间做了必要的折中。我认为,我遵循的是Oracle RWP部门的Andrew Holdsworth在2006年OOW大会上所传达的理念。在关于优化器及怎样搜集统计信息的演讲中,他谈到了90/9/1法则,具体说明如下:
90%的情况下,默认样本就行了;
9%的情况下,需要扩大样本采集范围;
剩下1%的情况跟样本大小无关。
这是著名的80/20帕累托法则的增强版,我认为它非常适用于描述理解Oracle核心机制的需求。为便于解释本书,我将该法则重新调整为:90%的情况下你只需了解Oracle如何保持系统运行,1%的情况下你需要搞清楚哪里出了问题,而本书关注的是剩余9%的情况——如果你对Oracle幕后工作有更多的了解,就会更加了解Oracle数据库,会少浪费些宝贵时间。
接下来呢
前段时间,有人问Tanel Põder(我的技术审阅人)什么时候写一本Oracle核心内幕的书,他这样回答:
“如果要写一本常规的老式纸质书,那么答案是永远都不会写,因为这个领域变化太快了,而且写好这样一本书至少要花一整年的工夫,等到书出版时许多细节必然早已过时。”
这个回答很好。这也再次证明了我的观点,即要避免在那1%上浪费时间,而要坚持关注那些普遍的需求及类似的东西。Tanel没有写纸质书,而是在http://tech.e2sn.com/oracle写了一本实时更新的电子书。
但是,纸质书很棒(就算它做成了电子版本),而且我认为,书籍的排版格式会使其内容不同于若干篇互联网文章(就算写得非常好)。纸质书读起来能给人以内容连贯的感觉,整合的文章却不能。在我写这篇引言的时候,我的博客上已经有650篇文章了,文字量比本书要大得多。我可以从中摘录一些放到一起做一个迷你系列专题,而且即使将它们汇编起来,也不会是一本很差的书(哪怕需要我再花些时间写点内容将文章前后贯穿起来)。但是,即使是技术书籍,也需要给读者带来叙述连贯的感觉。
为了解决纸质“非实时”的问题,我在我的博客http://jonathanlewis.wordpress.com/oracle-core/上写了许多篇博文。其中每篇对应本书的一章。上面还会给出本书纸质版的勘误或简短的补充。因为是博客的形式,所以读者可以在后面提问或评论。当读者询问我的其他书什么时候再版时,我的回答都是不会再版。但是,根据读者的反馈,我也许会发现书中的一些话题需要进一步解释,我漏掉了一些流行的话题,甚至有些全新的话题需要用一整章或是附录来谈论。
我的开场白说完了。现在轮到你,我的读者,来发表建议了。






内容简介
本书揭示了Oracle 数据库内部的核心信息,这些信息恰好是每个DBA 排除故障所必需的,不多不少。内容涉及Oracle 核心架构基础:多少开销是合理的?如何认识到你做得太多?如何预见故障?为什么发生这些故障?等等。
本书适合DBA、QA、架构师、开发人员等人群阅读。

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多