DBA

《深入解析Oracle》一书前言
作者:eygle |English Version 【转载时请以超链接形式标明文章出处和作者信息及本声明】
链接:http://www.eygle.com/archives/2008/11/oracle_internals_preface.html
站内相关文章|Related Articles
《循序渐进Oracle》+《深入解析Oracle》再版
元旦献礼-《深入解析Oracle》第一、四章下载
DBA的新年及圣诞礼物-《深入解析Oracle》
《深入解析Oracle》在China-Pub上的预定
《深入解析Oracle》一书勘误表
虽然《深入解析Oracle》一书还没有正式出版,我还是先将前言发布在这里。

因为我一直觉得,前言是一本书非常重要的部分,作者的思想和意图会在这里传达。以下就是我为这本新书所写下的前言。
------------------------------------------------------------------------------
经过几年的积累,再加上几个月的努力,新版的《深入浅出Oracle》即将呈现在大家的面前,我当然希望这本书能够得到大家一如既往的支持,然而一本书的价值仍然要靠大家去评判。
关于这本书的修订,有很多话想和大家说一说。

从2006年这本书出版到现在,已经过去了2年,在这两年中,《深入浅出Oracle》经历了大家的热烈关注期,也经历了淡淡的沉寂期,很长一段时间并没有修订这本书的想法,直到最近,我仍然不断收到很多读者的来信,和我热烈的探讨书中的观点,甚至得知有些教育和培训机构已经选择我的书作为培训教材。
这么多热情的读者使我感到了不安,因为这本写作在2006年的作品已经存在了很多需要增补的地方,只要有人阅读,我就不能松懈。
正是因为支持这本书的读者,我才下定决心要将这本书重新修订,修订的目的是为了让这本书更加完善、更加接近Oracle数据库的发展变化。

关于这本书的结构我愿意再重新描述一次,本书每章的布局基本上分为三个部分:入门的基础知识、进阶知识、结合实际的诊断案例分析。
我的原意是让基础知识部分作为初学者的入门参考,进阶部分作为Oracle技术爱好者深入学习的材料,而案例分析则作为实践部分提供借鉴。
但是显然这样的设计招来了很多抱怨,一些初学者发现在这本书中能看懂的部分很少,我想我应该修订一下我的描述。实际上在这本书中,我更多关注了Oracle技术的深入探索以及案例描述,所以她更适合作为DBA进阶与深入学习的参考。

虽然如此,我仍然在很多公开的场合谈到,即使是一个初学者,也应该有更高的起点,暂时有些东西看不懂不怕,但是至少你应该知道深入的学习应该向何处去,深入不是错误,如果你不能深入那才是错误。要记住随着技术以及时代的不断进步,社会留给DBA的成长时间越来越短,一个DBA从入门到成长为资深的时间不会超过2年。所以,如果你能够忍受一点知识的折磨,这本书还是会对你有用。张爱玲说过,成名要趁早。做技术的也是如此,成长越早越好,越快越好。
当然,这本书的另外一种写作方式和我个人的学习方法有关,当我在研究Oracle技术的时候,总是忍不住要不断深入去探索,试图从原理或本质上理解Oracle的技术实现,我一直认为表象以及呆板的记忆对学习是无益的。

所以当然,这不是一本简单的关于Oracle技术知识概念性介绍的书,读这本书,实际上你是在和我共同经历一次Oracle的学习过程。如果你和我一样享受这个过程,那么这本书就是为你准备的。

在修订版中这本书的主要变化是,由原来的9章增加到现在的10章,原书的第一章承载了太多的内容,加上我的大量增补,现在我将第一章的内容分开,就变成了现在的10章,新的一章命名为《控制文件与数据库初始化》,关于控制文件这部分内容,原本计划写在另外一本书里,现在加在这里也是非常合适的。
除此之外,全书的整体结构并未改变,但是在入门、进阶与诊断案例三个方向都做了极大的扩展。这些扩展包括在入门部分对基础知识进行了更为全面完整的介绍;在进阶深入部分,对机制原理进行了进一步深入阐述;在诊断案例部分增加了一些这几年来遇到的有价值案例,结合分布到各个章节。在新技术方面,全书对Oracle Database 10g与Oracle Database 11g的一些新特性进行了补充,但是新特性的补充是根据全书架构需要进行的,并非盲目,本书最重要的仍然是第一版就确定的体系结构。
经过修订,增增减减,新版的变更部分大约在40%左右。

关于深入浅出这四个字的理解,很多读者提出质疑,说本书深则深矣,浅出则未必。
在这里我想说说我自己对于"深入浅出"这几个字的理解,这个理解是伴随着我的职业生涯的。以一个和技术有关的例子来说也许会好一点,我在书中探讨过关于数据库的启动与初始化的过程。回想起来最初对这个问题的探讨还是在2004年左右,那时候我和Biti在北京因为偶然第一次用sql_trace跟踪数据库的Open过程,因而获得了关于bootstrap$的信息:


create table bootstrap$ ( line# number not null, obj#
number not null, sql_text varchar2(4000) not null) storage (initial
50K objno 56 extents (file 1 block 377))

而这还仅仅只是第一步的探索,这里的探索涉及到了数据文件、数据块的定位,而在后来的网上探讨中,有朋友给出了更进一步的发现,当使用10046事件来跟踪数据库的启动过程,你会发现最初的等待输出有如下两行信息(来自Oracle9i数据库):

WAIT #1: nam='db file sequential read' ela= 94 p1=1 p2=417 p3=1
WAIT #1: nam='db file sequential read' ela= 103 p1=1 p2=377 p3=1

这些信息就清楚的显示了数据库启动中经历了从文件1的417号Block到377号Block的定位过程,一切就是这么简单清晰,可是在没有经历过那么多深入的摸索、尝试与思考之前,你是不会看到这么浅显、明晰的展示,或者看到了也可能无法一下子有那么清晰的理解。
db file sequential read是一个大家都常见的事件,可是你能否理解这后面所隐藏的种种处理以及细节呢?我处理过很多次因为这个事件而导致的性能故障,有时候看起来是极其棘手的问题,而能否真正理解这个事件的本质,以及每一个参数的含义(也就是说你的理解是否足够深入)是解决问题的关键,如果你曾经足够深入的探索过,你给出的答案很可能会是非常直接的、非常简单的,也许让人惊讶,但是绝对有效。

那么再进一步的观察,在以上2条输出之前,还会有以下一段输出:


WAIT #1: nam='direct path read' ela= 46 p1=1 p2=1 p3=1
WAIT #1: nam='direct path read' ela= 5 p1=2 p2=1 p3=1
WAIT #1: nam='direct path read' ela= 3 p1=3 p2=1 p3=1
WAIT #1: nam='direct path read' ela= 3 p1=4 p2=1 p3=1
WAIT #1: nam='direct path read' ela= 3 p1=201 p2=1 p3=1

现在来想一下,为什么会有这么多direct path read的等待事件?p1代表的是文件号,那么201号文件又是指什么文件?
我在本书中有过进一步的探讨,实际上数据库在Open的过程中,会对数据文件以及控制文件进行比对校验,数据文件的第一个Block记录了重要的检查点、SCN等信息,这些信息在启动时要被读取,这里就是这样一种体现。
看,很多书本中抽象的知识,现在通过简单的观察,我们就获得了直观的印象。而且你会对Oracle的种种等待事件有了更加深入的理解。

这就是我理想中的那种深入浅出,这是一种在经历了千难万险、峰回路转之后,看山还是山的那种平淡。佛祖拈花,迦叶破颜,有时候能够感受到这种会心之意是非常难能而宝贵的。

有一次去兰州大学做技术交流,兰大的一位李老师对我说,最近看我网站上提到的学习方法等内容,感觉到一个字:虚!我当时跟他开玩笑说,我还有更虚无的8个字可以送给你,那就是:运用之妙,存乎一心。
这是玩笑,也不是玩笑,有时候对Oracle进行了深入的研究与探索之后,剩下的如何运用这些知识去解决问题,实际上是非常灵活的,很多时候简单的常规方法经过巧妙运用之后就可以化为神奇,发挥出你意想不到的作用。所以根本的,我们应该花力气去做的仍然是积累、深入、思考,然后才能在遇到问题时举重若轻、运用自如。
我相信每个人都会有这样的经历,如果你读到这里能够有一次破颜的会心微笑,那也许就是我最大的收获。

尽管如此,最终我还是决定做一些改变,所以这本书最后的名称被确定为《深入解析Oracle》,这是我在美国参加2008 Oracle Open World期间忽然产生的一个想法。我和Kamus曾经在东方标准做过一个系列的公开培训课程,就是用的这个名字,我很喜欢这个名字。
新的名字可以避免对一些读者的误导,通过这个名字我想说这是一本由浅入深、比较深入的书,也许这个名字更符合这本书的主旨。

在《深入浅出Oracle》之后,我写作了另外一本书《循序渐进Oracle》,通过这两本书实际上我想构建一个更为完善的学习结构,从DBA的实际工作应用出发,帮助Oracle爱好者更好的进行入门以及深入的学习。
也经常有些朋友发邮件来询问Oracle的学习路径与学习规划,通过写作,我一直想把自己的领悟传达出来,现在在这里我将这两本书的体系结构整合一下供大家参考:



当然,这两本书都是自成体系的,在将来也许还会有第三本,在Oracle完整的知识体系结构里,这两本书还缺少一些重要的内容。

我要感谢众多支持我的读者们,是你们的支持与鼓励才有了本书的修订,你们的支持才是这本书真正的存在价值。在这本书出版的两年多以来,我的生活已经有了很大的变化,我要感谢我的太太Julia,感谢她走进并且改变了我的生活,感谢她理解我很多时候废寝忘食不顾一切的学习与工作态度,她的支持以及理解是我写作的基石,我还要把这本书献给我的儿子,他比这本书还要年轻,在我修订这本书的很多章节时,他就在我身边爬来爬去,他是我永不枯竭的快乐源泉。
没有什么比生活更重要的了。

虽然本书是《深入浅出Oracle》一书的修订版,但是其工作量与意义对我来说完全不亚于一本新书,由于水平所限以及难免的疏漏,书中肯定存在错谬之处,真挚的欢迎大家的批评与指正。

最后我还要感谢我的朋友们,他们为本书提出了很多宝贵的意见与鼓励;感谢黄志洪、牛新庄、冯春培、陈吉平、张乐奕为本书撰写评论及推荐。

DBA
 

-----------------------------------盖国强 2008-9-18 于北京

 

你可能感兴趣的:(数据结构,oracle,sql,生活,出版)