《深入解析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》一书的修订版,但是其工作量与意义对我来说完全不亚于一本新书,由于水平所限以及难免的疏漏,书中肯定存在错谬之处,真挚的欢迎大家的批评与指正。
最后我还要感谢我的朋友们,他们为本书提出了很多宝贵的意见与鼓励;感谢黄志洪、牛新庄、冯春培、陈吉平、张乐奕为本书撰写评论及推荐。
-----------------------------------盖国强 2008-9-18 于北京
- 大小: 52.2 KB
分享到:
相关推荐
DBA职责(岗位说明书) 数据库管理员(Database Administrator,简称 DBA)是负责管理和维护数据库服务器的关键人物,主要职责包括确保服务器工作状态正常、检查硬盘空间、查看日志和跟踪文件、检查备份的有效性、...
DBA面试题 Oracle 本文总结了 Oracle 数据库管理员(DBA)面试中的一些重要知识点,从表连接方式、执行计划、CBO 和 RBO、SQL 调整、索引、绑定变量、执行计划、排序等方面进行了详细的解释。 一、表连接方式 在 ...
在Oracle数据库中,系统角色是预定义的一组权限集合,它们为数据库管理员(DBA)提供了方便的方式来管理和分配权限。DBA角色是最具权限的角色之一,通常赋予那些负责数据库全面管理的用户。当误删除了这个关键角色时...
DBA 职责及日常工作职责 DBA 职责是数据库管理员的职责,负责数据库系统的日常维护、监控和管理。DBA 的日常工作职责包括安装和升级数据库服务器、创建数据库存储结构、管理数据库用户、控制和监控用户对数据库的...
MySQL DBA(数据库管理员)在日常工作中经常需要执行各种脚本来进行数据库的管理和维护工作。这些脚本涵盖了从数据备份、恢复、性能优化到错误排查等多个方面。以下是一些MySQL DBA常用的知识点,结合“mysql_mgr_...
Oracle DBA 入门、进阶学习路线图参考 Oracle DBA 入门、进阶学习路线图参考是一个详细的学习路线图,旨在帮助新手 DBA 学习 Oracle 数据库管理系统。该路线图由经验丰富的 DBA eygle 根据自己的学习经历和经验总结...
数据库管理员(DBA)在IT领域中扮演着至关重要的角色,他们的主要职责是确保数据库的稳定、高效和安全运行。以下是对DBA职责和日常工作的详细解析: 1. **安装和升级**:DBA负责安装和升级数据库服务器,以及相关的...
许多年来,我在不同的新闻组上花费了很多时间与那些想知道如何得到数据库管理员(DBA)的工作或者如何成长为一名DBA的IT人进行交谈,现在他们有了工作。这些年来许多人针对如何达到这个目标提出了不同意见。本文即是...
Oracle DBA工作手记中提到的DBA2.0是Oracle数据库管理员领域的一次重要概念革新,这一概念在2008至2009年间伴随着Oracle Database 10g的成熟和11g版本的推行而正式提出。DBA2.0不只是一个简单的概念,而是在长期实践...
标题中提到的“ORACLE DBA工作笔记 运维数据迁移与性能调优”揭示了这本书籍主要围绕着Oracle数据库管理员(DBA)在日常工作中经常需要进行的两项关键任务:数据迁移和性能调优。作为一名Oracle DBA,不仅要负责...
在我们深入探讨Oracle新手DBA入门的各个方面之前,让我们先来了解一些基础知识。数据库是存储数据的一种方式,它们通常被分为三种基本类型:层次式数据库、网络式数据库和关系式数据库。关系式数据库是目前最常见的...
MySQL DBA,全称MySQL Database Administrator,是专门负责MySQL数据库管理、优化、监控与故障排除的专业角色。这份“超经典MySQL DBA培训笔记”显然涵盖了MySQL数据库管理的各个方面,是DBA或者对MySQL有兴趣的学习...
### Oracle DBA 常用命令详解 在Oracle数据库管理工作中,熟练掌握一系列核心命令对于高效维护数据库系统至关重要。本文将详细介绍《oracle_DBA常用命令》文档中提及的关键知识点及其应用场景,帮助读者深入理解并...
【DBA职业生涯】是IT行业中一个独特且重要的领域,涵盖了数据库的管理、优化、安全以及故障排除等多个方面。本文由资深DBA Brian Peasland撰写,他分享了自己的职业发展历程,从计算机操作人员到DBA的成长经历,为...
MySQL DBA,全称Database Administrator(数据库管理员),是专门负责管理和维护MySQL数据库系统的专业人士。这份“大神写的MySQL DBA学习笔记”无疑是深入理解和掌握MySQL技术的重要资源,尤其适合那些希望提升自己...
DBA(Database Administrator)在Oracle数据库环境中扮演着至关重要的角色,他们负责数据库的设计、安装、配置、性能优化、备份恢复以及安全维护等工作。 本手册作为Oracle Database 12c DBA的官方指南,由清华大学...
在数据库管理领域,DBA(Database Administrator,数据库管理员)经常需要执行各种任务,其中包括数据库的对比。数据库对比是一项关键操作,用于确保不同数据库之间的一致性、找出差异或同步更新。下面将详细介绍这...
本书汇集了作者有关数据库管理的真知灼见,讲述了DBA 的方方面面,有技术的,还有生活的。作者本人不仅专业技术过硬,还当过篮球教练,对人生,尤其是DBA 的生存之道有很独到的领悟... 本书汇集了作者有关数据库管理...
根据提供的文件信息,我们可以推断出这是一套关于MySQL数据库管理(DBA)的视频教程,由讲师姜承尧教授。下面将从标题、描述、标签以及部分内容中提取相关知识点,并进行详细的阐述。 ### MySQL DBA 视频课程概述 ...
《DBA日记--署名》是一本记录了数据库管理员(DBA)日常工作与学习历程的书籍,作者以“白鳝”的身份分享了他的经验与感悟。这本书以其生动的叙述和丰富的技术内容,吸引了对Oracle数据库管理有兴趣的读者。通过日记的...