Oracle DBA手记3:数据库性能优化与内部原理解析
![](http://space.itpub.net/attachments/2011/11/13164110_201111141634082.jpg)
盖国强 杨廷琨 等编著
ISBN
978-7-121-14479-0
2011年9月出版
定价:49.80 元
16开
300页
宣传语:Oracle逻辑读写深入分析
面向程序员的数据库访问性能优化法则
Oracle的Latch优化深入解析
隐含参数与Library Cache、Shared Pool Latch原理
内 容 简 介
本书由多位数据库技术专家合著而成,融合了各行业DBA 的工作经验与思考,包含了精心挑选的数据库性能优化与内部原理解析案例。内容涵盖“DBA 手记”,以手记形式记录了DBA 们的工作点滴、经验分享;“SQL 与SQL 优化”,分别讲解了SQL 的执行计划,SQL
Profile 的使用,以及Oracle 中的NULL 值解析;“内部原理与优化”,分别介绍了Oracle 的索引分裂、TX 锁等待、闩锁原理、逻辑读写、隐含参数与Latch 原理等的内部操作。
本书的主要内容以原理分析、内部实践、故障解决为依据,将Oracle 数据库的深层技术层剖缕析、抽丝剥茧地展示给读者。希望能够帮助读者加深对Oracle 技术的认知和理解,并将这些技术应用到实践中去。
主创寄语
我们为什么学习Oracle?也许是兴趣,也许是想解决工作中的问题,也许是认为DBA 职业更稳定,只要精通Oracle就可以拿到不错的薪水,可以一劳永逸。每个人都有不同的Oracle 情节。我是这样开始的:我们以前的数据库性能很差,由系统工程师管理,大部分系统工程师都喜欢通过调整配置参数优化,因此也想方设法去调整Oracle 的参数,最终收效甚微。也许因为我是程序员出身,我喜欢从代码层面去分析问题,最后通过索引与执行计划解决了问题,从此对Oracle 产生了兴趣,因此开始了漫漫Oracle
学习的长路。我并没有想过自己去当一名职业DBA,所以Oracle 的学习总是断断续续,多半为了解决工作中的问题,直到后来想专注数据库方向时,才开始花更多的精力在数据库上面。因为了解自己很懒惰,所以我喜欢给自己一些压力,于是开始报考国家认证数据库工程师资格认证,系统地学习了数据库基础知识,后来又参加了OCA 和OCP考试。系统地学习Oracle 知识,现在专注于数据库设计与开发研究。一路走来,感触良多,有几点体会与建议:
1.你想做什么,就去学什么,时间总是可以挤出来的;
2.你需要了解自己,给自己设立可行的目标,否则会永远在原地踏步;
3.你能短时间掌握的知识往往也不能长久有用,知识的价值也符合市场经济规律;
4.理论与实践需要交互学习,当感觉理论很枯燥时,就去实践,当感觉实践很无助时,去补充理论,每一次变化都会让你有不同的升华。
——叶正盛
要在Oracle 数据库技术领域不断地进步,需要不断地学习,同时借鉴他人的经验,但是我想更重要的是我们需要独立思考,特别是通过独立思考解决性能问题和其他故障,不但会有成就感,而且在技术上的理解和领悟将会更多。希望本书中的文章和案例,能够起着抛砖引玉的作用,让读者朋友们跟随我们的思路,去思考如何解决这些问题,通过思考,形成自己的知识,使自己取得进步。
——熊 军
在学习Oracle 的过程中我个人最大的体会就是“有兴趣才会有真正的动力”。这些年来,多少次我所有的同事都走了,偌大的大厅只剩下我一个人在学习,我想,如果没有强烈的兴趣,我是走不了这么远的。
——崔 华
在繁华浮躁的时代,凡能静心著文者必有别样之情怀,我对这些著文传道者满怀敬意,也愿读者们能从中获益。
——恩墨科技创始人、Oracle
ACE 总监盖国强
前 言
在这样一个春暖花香的季节,我完成了本书的编辑工作,希望这本书到达读者手中时,仍有着这个春天的气息。
本书是《Oracle DBA 手记》系列的第三本,也是我的梦想的延续。源于最初的一个念头,结果就是数载的不停不懈,我常常鼓励自己:坚持一下,再坚持一下。也正因为如此,我才能够一步一步地走到今天,也就有了DBA 手记之三。
这本书中收录了我的一篇文章,其中讲述了在2010 年遇到的一个案例,那是我职业生涯中遇到的最为复杂的一个项目,在诊断过程中,我几乎调动了自己所知的所有知识,并进一步地灵活运用,最终帮助客户解决了纠缠多年的性能问题。记得最初在微博上说,这个案例就足够写一本书了,当时周老师紧跟着说,那就交给我出版吧。时过境迁,周老师已经离开博文视点,去开创自己的出版事业,而我在接二连三的项目中,也失去了最初奋笔疾书的热情,所以就零星写成了这篇短文,将这个案例中学到的一些知识与大家分享出来,只是没有更进一步去细化当时的曲折和细节了。生活和技术都是一样的,想到了就要做,否则就可能由当初的熊熊烈火蜕化成星星之火以致泯灭,我在此充当了一次反面教材。我要感谢在这个项目中一起奋斗的朋友们,在一次次猜测、实验和质疑中,我们最终发现了真相。我很怀念那段时光和殚精竭虑的过程。
我要特别感谢冯春培同学,据我所知,当下要他落笔已经是难上加难,再加上其掌上明珠呱呱坠地,期间的欣喜和忙碌足以让他放弃其他一切琐事,而当我相约其稿时,他汇集和整理了自己多年的心路历程,冠以“人生就是如此”的座右之铭,告诫我们,人生远远不止如此。回想当年共处于同一屋檐之下,而今各已儿女绕膝,白驹过隙,沧海桑田,还真是不过如此。
崔华和熊军兄弟两人,虽然与我相识于江湖,但是我们一见如故,其各怀一身绝艺,于数据恢复领域叱咤南北,联手开拓了一片恢复沃土;老熊的ODU 曾经帮助了大量网友无偿地恢复数据挽救业务;崔华不断的技术探秘,使得Oracle 的种种恢复难题迎刃而解。而他们多年对我的无私支持、勤于分享也为广大技术爱好者带来了福音。今年崔华和熊军双双通过了Oracle ACE 的提名,这实在是实至而名归的又一体现。
姜龙与我结识于上海,其接触Oracle之早,出入网路之先,皆让我赞叹,十数年而磨一剑,其精心总结之案例分享皆为我们提供了借鉴与崭新思路。我常说,将合适的技术应用于合适之处,即为优化。姜龙的几个案例,或借助物化视图,或借助TimesTen,或巧用同义词,皆能于平常处见神奇,大幅度优化了系统性能。他所管理的数据库极多也极重要,这些精心调整优化实际上是“字斟句酌”、履险如夷,我记得他的一个系统甚至到了加一发而弗可之地步,所以这样的优化更需要勇气和细致,而这正是一位卓越DBA 的品质要求。
黄玮似乎是一位独行之侠,居于东南之地,自树一帜,而与外界绝少往来,然每发一文必如春笋发于微,惊雷动于世。其于Oracle 内部原理研究之深入、剖析之透彻无不让人拍案叫绝,然黄玮之淡泊与隐忍视一切喧嚣如无物,他很少出入论坛,也极少发布技术之外的言论和探讨,他只是按照自己的步调时不时放出一些让识货者视为珍宝的文章。感谢他的慷慨付我以妙文,才有了这本书中他精彩的分享。
叶正盛是一位经验和履历都极为丰富的数据库架构师,于阿里的思考更让他时常有美文发布,结识他是因为在CSDN 上的一篇文章,虽然以程序员角度出发,但是其思考之深入,涉及之广泛,配图之精妙,皆让我感叹,其角度虽曰程序员,然对所有数据库管理员和性能爱好者,皆能有如悟恍然之处;在繁华浮躁的时代,凡能静心著文者必有别样之情怀。正盛以新华字典配图,瞬间将我打动,儿时灯下伏笔、按图索骥之情景历历回在眼前,我在微博上私信约稿,正盛校订其稿,完而善之,才有书中之别样光彩。
杨廷琨在《Oracle DBA 手记:数据库诊断案例与性能优化实践》(这是本系列图书的第一本)出版之际还只是我的挚友和伙伴,而现在已经是我们的同事和强劲后备。老杨是ITPUB 上的“百科全书”,其知识范围之广,涉猎之深之远,一时无人能出其右。老杨之高产、勤奋也让人自愧不如,要让他从一年数百篇文章中精而选之,实非易事,但是在我再三请求之下,老杨勉为其难,汇珍珠成项串,总结手记若干,实为本书点题之作。
正因为有这么多朋友和专家的无私奉献,热心分享,才有了DBA 手记之一而再,再而三。虽然本书收录的部分文章在网络上可见,虽然已经到了电子书横行的时代,但是我仍然喜欢纸面阅读,一本可以拿在手里的书给我的阅读愉悦是无可替代的。在《Oracle DBA 手记2》出版的一年多来,我经常在出门时放一本在背包里,其中的很多文章我已经反反复复阅读了很多次,有时候我想,我才是这本书的最大受教者。
我希望读者们也能喜欢并从中受益,感谢你们!
根据本书的内容,我将全书分为四篇。
第一篇 DBA 之路
这一篇包括一章内容,由冯春培撰写。冯春培是业内著名专家,其技术与行业思考一直为业内所关注,本章就是他对多年的职业经历与行业观察的总结,真知灼见跃然纸上。
第二篇 DBA 手记
这一篇包括四章内容,以手记形式记录了DBA 们的工作点滴、经验分享。本篇的四章内容分别由杨廷琨、姜龙、叶正盛、熊军撰写,杨廷琨的手记侧重于诊断分析,姜龙的手记侧重于以不同技术手段优化数据库,叶正盛的文章则是以程序员的角度阐析数据库内容,熊军的文章介绍了Linux 下使用大内存页优化Oracle
数据库的实现和原理。
第三篇 SQL 与SQL 优化
这一篇包括三章内容,分别讲解SQL的执行计划解读、SQL
Profile 的使用,以及Oracle 中的NULL 值解析。本篇的三章分别由崔华、熊军、杨廷琨撰写。
第四篇 内部原理与优化
这一篇包括五章内容,分别介绍了Oracle 的索引分裂、TX 锁等待、闩锁原理、逻辑读写、隐含参数与Latch 原理等的内部操作。这一篇章的内容较为深入,分别由黄玮、盖国强、熊军撰写,供喜欢探究内部原理的读者参考。
基于技术分享的目的,我和张乐奕(Kamus)在2010 年创建了Oracle 用户组(ACOUG—http://www.acoug.org),并且每个月在北京开展一次面对面的技术交流活动,这些活动让我们结识了更多志同道合的朋友和优秀的技术作者,感谢Kamus这一年多来的努力付出。
感谢为本书供稿的朋友们,也感谢恩墨科技的仇实、谭龙、盖国相等几位同学,他们在书稿整理、排版等方面对我提供了大量帮助。由于编者能力有限,书中难免存在不足和疏漏之处,敬请读者朋友们指正。
网络以及通过网络来到现实的朋友,永远是我无比珍视的巨大财富。
盖国强(Eygle)2011-04-26 于北京