许多想进入Oracle数据库领域的初学者,为了能成为Oracle专业人员而投入了大量的金钱、时间和精力,但最终都是半途而废。其实他们本来可能会成为优秀的Oracle数据库管理员或优秀的Oracle数据库开发人员,但错误的培训理念和落后的培训方法加之糟糕的培训教材和平庸的教师使他们误入了歧途,并彻底扼杀了他们在这方面的才华,摧毁了他们的自信心。不少培训中心以应试的方式培养了一批又一批的纸上数据库管理员和开发员。
这种现状是整个中国IT培训行业的悲哀。其实,教师这个职业有点像医生,医生把握着病人的生命,教师影响着学生的未来。一个平庸的教师或一本平庸的教材要浪费许多甚至是成千上万个学生宝贵的资源(时间、金钱和精力),更甚者会断送一些学生的美好未来。
培训或学习一门手艺实际上也是一种投资(需要投入大量的时间和精力,也包括金钱)。作为一种智力投资,投资者(读者)在投资之前,当然想知道市场的现状和未来的走势。智力投资,要比投资在不动产(如房地产)上灵活,因为投资者可以带着这些无形资产走遍海角天涯。
Oracle是一个适合于大中型企业的数据库管理系统,其市场占有率是所有数据库管理系统中最高的,而且在可以预见的将来,它的霸主地位也是无法动摇的。它主要的用户是银行、电信、移动通信、航空、保险、金融、跨国公司和电子商务等。根据WTO的有关协议,从2005年起,我国在以上多数领域要逐年开放市场,并要在几年之后开放全部市场。因此,随着这些领域外资的大量涌入,在不远的将来对Oracle数据库管理员和开发人员的需求将会急剧增加。而在国外Oracle数据库管理员和开发人员的工资都相当高,这些公司不可能也没有能力从国外带来大批的Oracle从业人员。
回首二十多年的IT工作生涯感触良多,从大学刚毕业开始,从底层的程序员做起一直到写第一本Oracle的培训教材为止,算起来已有整整一代人的时间了。说句时髦的话是“二十年磨一剑”;说句不好听的话,二十多年还没混个一官半职,还在IT工作的第一线与年轻人一起冲锋陷阵也算够“背”的了。
这二十多年,我最大的收获之一就是对IT领域特别是Oracle数据库领域的深刻领悟。虽然这种领悟对我个人可以说已经太晚了(有点像结了婚才知道怎样谈恋爱,大学毕业了才知道怎样念大学似的),但是相信这种领悟以及我个人的一些工作经验和教训会帮助许多读者少走不少弯路。这也算是我做的一件善事。我几乎没烧过香也没拜过佛,帮助读者少浪费些时间、精力及金钱也算是积点阴德吧。
IT领域是变化最快的领域,有不少学者或专家认为平均每两到三年就有百分之五十的知识需要更新。回首二十多年的IT工作生涯,我发现许多真正核心的东西很多年都没变过。还是以Oracle为例,从Oracle 7到现在的Oracle 11g,其体系结构甚至基本命令几乎没什么变化。之所以许多人认为每次升级变化都很大,是因为第一次学习时就没有完全理解,因此每次升级时都跟学习新的一样。所以在此再次强调:一定要把软件最核心的内容彻底掌握,“万变不离其宗”,这样无论软件怎样变化,您都能驾轻就熟,轻松掌握。
这本书是我从二十多年曲折的IT工作经历中提炼出来的,是以一位Oracle从业人员的视角来介绍在实际工作中所需的Oracle知识和技能。本书尽可能介绍工作中常用的和相对比较稳定的Oracle知识和技能。
现在,许多媒体上都刊登了不少莫名其妙的招聘广告,如果有人按照广告上的标准来要求自己,学到退休能达到招聘的要求就不错了。但是又有不少培训中心利用这些招聘广告做宣传,办起了一个又一个的速成培训班。因此,本书还要介绍一些Oracle行业中鲜为人知的陷阱和误区,从而使读者避免被那些莫名其妙的招聘广告和一些所谓的“成功人士”的豪言壮语引入歧途。
目前多数培训中心的Oracle数据库管理(有的也称为Oracle体系结构等)的培训时间为2~4天,Oracle公司为5天,每天6小时。如果您是一个真正的初学者,想在这么短的时间内学会Oracle数据库管简直是“天方夜谭”。在国外,这一部分培训对于初学者的培训时间一般最少为4周(对SQL部分的培训至少为3周),而且硬件和软件环境比我知道的任何一个国内培训机构都好。例如,绝大多数国外培训机构都会提供至少一个如CBT(Computer Based Training)或Oracle Simulators(模拟器)之类的多媒体模拟环境,但在国内的培训机构中我还没见过。尽管这样,学生还是累得叫苦连天。
在Oracle的学习和培训中也要坚持“科学发展观”,即要按科学的规律来进行培训和学习。以Oracle公司的5天培训为例,这种培训是为已经具有一定Oracle实际工作经验的Oracle从业人员设计的。Oracle的这部分student guide共两本(Oracle 8为3本),与大学的教科书的厚度相当。读者认真想一下就能意识到,即使是小说,在那么短的时间内完全理解也不是一件容易的事,更何况是一门新兴的科学了。正如OCP证书所称呼的那样,Oracle的OCP培训是培训Oracle专业人员的,即培养专才的。培养专才需要时间,根本不能速成,更不能立竿见影。专才的培养需要时间,需要好的教师、好的教材和合适的软硬件环境。
Oracle系统在业内有“贵族系统”的美名,以其培训和教材之昂贵、课程之难学而闻名。由于中国目前的人均收入与发达国家相比还有很大的距离,虽然许多人知道Oracle系统是一个应用很广的优秀的数据库管理系统,但面对如此昂贵的学费和高门槛也只得放弃学习了。
本书的目的就是把Oracle数据库从高雅的象牙塔中带出来,使它的“贵族”身份“平民”化,为普通人提供一套能买得起,而且容易读懂的Oracle数据库实用教材。
本书是Oracle数据库管理的实用教材。虽然它几乎覆盖了OCP或OCA考试的全部内容,但其重点是实际工作中能力的训练。本书的内容和例题设计由浅入深,为了消除初学者对计算机教材常有的畏惧感,本书把那些难懂而且又不常用的内容尽量放在后面章节,并删除了个别非常难懂而且一般的Oracle工作人员都很少用到的内容。根据我多年的IT工作和教学经验,一般在某个系统中所使用的功能是很少的,相信还不到一半。因为绝大多数难懂的操作可以通过其他操作的组合来实现。
与其他同类书籍相比,本书的第一个特点是,本书并不是一条命令一条命令地简单介绍,而是把相关的命令有机地组合在一起来介绍。例如,在执行一条Oracle命令之前,先介绍使用什么命令来格式化显示输出,以使结果显示得更加清晰;接下来,再介绍使用什么命令来查看当前数据库的相关信息;之后,再介绍怎样执行所学的Oracle命令;最后,还要介绍使用什么样的方法来验证所执行的命令是否真的成功等。与其他很多同类书籍不同,书中几乎所有的例题都是完整的,读者只要按照书中的例子操作,一定会得到与书中所给相同(或相似,因为每个数据库系统的配置可能略有不同)的结果。
本书的第二个特点是,为了消除初学者对Oracle教材常有的畏惧感,本书并未追求学术上的完美,而是使用生动而简单的生活实例来解释复杂的计算机和数据库概念,避免用计算机的例子来解释计算机和数据库的概念。
本书的第三个特点是,它是自封闭的,即读者在阅读此书时不需要其他的参考书(除了必备的SQL知识外,读者可参阅我的另一本Oracle入门书——《从实践中学习Oracle/ SQL》)。
由于以上的设计,本书对学生的计算机专业知识几乎是没有任何要求的。对以前培训学生的跟踪回访表明,这样的设计是合理的。
本书中多数概念和例题都给出了商业应用背景,且许多例题是以场景或故事的形式出现的,同时很多例题和它们的解决方案是企业中的数据库管理员或数据库开发人员在实际工作中经常遇到或可能遇到的。因此,很多例题不加修改或略加修改后便可应用于实际工作中。
现在,国内的Oracle培训有些误入歧途。许多参加培训的学生认为只要交了钱,参加了培训课程就可以学会Oracle,因为不少培训机构就是这样宣传的。培训是一个互动的过程,无论多好的老师、多好的教材都没有办法保证那些不学习的人掌握老师所讲授的内容。科学已经证明,一个人要想掌握课堂上所学的内容,其所用的时间应该至少为1∶3,即每听1小时课至少要用3个小时来理解和消化所听的课程。
因此,希望读者在学习本书之前,最好安装上Oracle服务器并设置好实验环境,在阅读本书时,最好把书上的例题在计算机上做上一两遍。这些例题是经过仔细筛选的,对读者理解书中的文字叙述非常有帮助。本书与OCP或OCA考试的第二门(Oracle数据库管理/体系结构)的级别相当,但重点放在训练学习者的实际工作能力上。读者在接近完全理解了该书的内容,再做一些模拟考试题后,通过OCP或OCA的第二门考试应该没什么问题(Oracle 10g只考一门就可以通过OCA认证)。
本书首先教读者设置一个与真实的生产数据库相近的模拟环境,读者通过对这个与真实的生产数据库相近的数据库的操作,可以获得对真实的生产数据库进行维护和管理的实际知识与技能,成为真正的数据库管理员而不是只能说不能干的“纸上数据库管理员”。
为了帮助读者,特别是没有从事过IT工作的读者了解商业公司和Oracle从业人员的真实面貌,在书中设计了一个虚拟人物“金元宝”,利用此人的求职、工作和在事业上的成长过程来帮助读者理解真正的Oracle从业人员在商业公司中如何工作,以及公司的Oracle数据库系统的现状。
现在,社会上常说的一句话是,“一个项目可以带出一个队伍”。在本书中也设计了一个虚拟的项目。该项目是由某报上的一篇文章引起的,这篇文章的题目是《中国妇女解放运动的先驱——潘金莲》。最初有学者想用科学的方法证明潘金莲到底是不是中国妇女解放运动的先驱。之后,由于民众的热忱空前高涨,参加讨论的人越来越多,争论也越来越激烈。因此,作为中国妇女解放运动的先驱的候选人也在不断增加,最后该项目定名为“寻找中国妇女解放运动的先驱工程”,简称“先驱工程”。
从第6章开始,本书的虚拟人物“宝儿”就要为这个浩大的先驱工程创建所需的几乎所有Oracle数据库组件,从数据表空间、还原表空间和临时表空间等开始,一直到创建Oracle用户为止。宝儿还要对这些组件进行日常管理和维护。宝儿在先驱工程工作的过程,除了帮助读者掌握相关的Oracle操作技能外,还可以帮助读者理解Oracle从业人员在实际的项目中是如何工作的。
也许有的读者会想:“如果我遇上像先驱工程那样没谱的项目,我就不干了。”其实这种想法是错误的。实际上,一个没谱或失败的项目照样可以带出一支好的技术队伍,甚至带出一批专家来。另外,在一个项目开始时又有几个人能高瞻远瞩知道它的结局呢?一个项目的高科技含量与该项目有没有谱无关。
本书中的人物、项目和公司等都是虚构的,因此本书中有不少虚构的故事,在这些故事中使用了不少夸张性的语言,其目的只是增加读者的兴趣。许多人认为学习Oracle数据库管理系统是一件既枯燥又令人生畏的事,希望本书的写法能在枯燥的Oracle学习与娱乐之间达到某种程度的平衡,从而不至于使读者在整个学习过程中神经一直绷得很紧。
本书是我用心所写。我个人的原则是要么不做,要做就要尽心尽力地做。一个人的精力有限,不可能什么事都做,而且做得又很好(除非在梦中)。所以在写书时我也本着宁可不写书,但绝不能写烂书的原则。因为烂书可能要浪费成千上万名读者的宝贵时间,甚至断送一些读者的美好未来,写烂书就像做假药一样等于是在做损。
当读者阅读本书时,可能会发现本书没有指定的练习题。这是因为几乎每一章都有很多例题,读者只要把这些例题做上一两遍也就达到了练习的目的。另外,本书在每章的结尾处并未给出思考题,而使用了“您应该掌握的内容”这样的句子。之所以没有使用“思考题”这个词是为了避免束缚读者的想象力。使用“您应该掌握的内容”这样比较宽松的句子的好处是,当您思考所列出的内容时只要理解它们就可以了,至于如何解释和回答它们已经变得不重要了。
《从实践中学习Oracle/SQL》出版后,有些读者发来电子邮件建议在每一章的开始以简短的方式列出这一章的目的或重点,但经过仔细的权衡还是没有加。主要原因是避免增加书的篇幅。如果读者有类似的阅读习惯可以在读一章之前浏览一下这一章的目录和该章末尾的“您应该掌握的内容”,就可以清楚这一章要讲的内容了。
如果读者安装和使用过Oracle系统,本书第0章的大部分内容可以不看。但是对虚拟环境的配置和虚拟人物的介绍最好看一下,这样对理解本书的内容会有所帮助。如果您不是数据库管理员而且时间又很紧,本书的第9章、第13~15章可以暂时不看,因为这些章所介绍的主要是数据库管理员所需的知识和技能。
书作为一种古老的单向交流工具,它的承载能力是很有限的,因此产生二义性几乎是不可避免的。为了减少二义性的产生,我曾把本书中许多章的初稿分别发给了多个我所执教的培训机构的学生们,并根据他们阅读后反馈回来的意见对相关的章节做了相应的修改。其中有些章节是全部重写甚至重写了几遍。尽管做了这些努力,但也很难保证该书像武侠或爱情小说那样容易理解,因为它毕竟不是一本消遣的书。
本书既可以作为学校或培训机构及企业的Oracle数据库管理课程的教材,也可作为自学教材。
本书的编写目的有以下三个。
(1)把那些没有计算机或Oracle背景但想加入IT产业的人带入Oracle这个行业中来。
(2)为那些有计算机或Oracle经验但没受过Oracle正规培训的人提供一套系统而完整的Oracle培训教材。
(3)为那些非计算机人员,如管理或行政人员,了解和使用Oracle提供一套完整易学的培训教材。
本书中的绝大多数例题都分别在Oracle 8的8.0.4和8.0.5,Oracle 8i的8.1.5和8.1.7等版本上测试过。在定稿时,所有的例题都在Oracle 9i的9.0.1或9.2版本上测试过。最后,绝大多数例题又都在Oracle 10g和Oracle 11g上重新测试过。因此对读者所使用的Oracle版本几乎没什么要求。
参与本书编写的有何明、何茜颖、王莹、万妍、王逸舟、牛奎奎、王威、程玉萍、万群柱、王静、范萍英、王洁英、刘飞、王超英、万新秋、王莉、黄力克、万洪英、万节柱、万如更、李菊、万晓轩、赵菁、张民生、高盼、杜蘅等。在此对他们辛勤和出色的工作表示衷心的感谢。
最后,预祝读者能够顺利地乘上Oracle这叶方舟(也许是“贼船”)!
何 明