前言
从1999年毕业以来,我有幸进入IT行业,从事企业业务系统的软件开发工作。那个时候C/S架构仍大行其道,而我的工作则是使用PowerBuilder来构建基于Oracle数据库的业务系统。而后随着B/S架构的兴起,程序开发人员们又忙不迭的将注意力转向了Java、.NET等。我也不能免俗,同时也是为了生活,只能从已经很熟悉的PowerBuilder转向了Java、转向了面向对象的编程。
在从事软件开发和设计的过程中,始终都基于Oracle数据库来进行架构。因此要想更好的开发软件产品,就必须对Oracle数据库有一个比较全面的了解,包括它的体系架构、PL/SQL的开发、SQL语句的优化等内容,都需要了解。在研究Oracle数据库的过程中,我对它逐渐产生了浓厚的兴趣,便有了从软件开发转而成为专业从事Oracle数据库管理的念头,并很快付诸行动,成为专职的Oracle DBA。现在,我从事的是有关Oracle数据库的培训工作。
在研究Oracle数据库的过程中,我养成了记笔记的习惯,将所问所学所想都记录下来。这些笔记也为本书提供了大量的素材。
从2004年底开始,我陆续在IT168网站上投稿,从以前的笔记中,挑出一些我认为比较有意义的学习经验发表在了IT168网站上,并由此而结识了IT168网站的熊建国老师。
我在进行培训的过程中,经常听到学员向我诉苦,说他们作为初学者,在学习Oracle的OCP教材时,注意力主要集中在如何把英语翻译成中文上了,结果导致阅读效率不高,前看后忘。要是能有一本紧贴OCP的考试内容的中文的教材就好了。这样的话,他们就可以先从概念上大致掌握Oracle数据库的一些基础知识,然后再看其他更加深入的英文文档时就会轻松很多。这时我就已经开始在想,市面上是不是应该有一本全面贴近Oracle OCP学习和考试内容的中文教材。Oracle数据库的初学者在阅读完这样的一本中文教材以后,就能比较容易的掌握Oracle数据库,进而为他们进行深入的学习打下良好的基础。
恰巧这时,熊建国老师和我聊起来,IT168网站准备和出版社合作,共同推出一系列有关Oracle数据库方面的图书,并和我讨论了有关如何选择题材的问题。我立刻把初学者的一些想法向熊建国老师做了说明。熊建国老师经过考虑以后,也很认同我的想法,并鼓励由我来把这个想法付诸实现。
写书对我来说是一个非常痛苦的过程。因为在工作中,可能只需要对常用的知识点精确掌握,而有些不常用的知识点,则只需要了解大概就可以了。但是写书就不一样了,对于任何相关的知识点,都不应该含含糊糊。
因此在写作的过程中,我翻阅了大量的材料、进行了大量的实验,仍始终胆战心惊、如履薄冰,唯恐下笔有误,从而误导本书的读者,这可真是罪过罪过了。不过个人的能力始终是有限的,书中的错误也肯定在所难免,对书中观点如有任何疑问或错误,欢迎各位读者发送邮件到howtobeocp@163.com。
本书内容
只要从事过数据库相关领域的专业人员,应该都知道Oracle公司的数据库产品是业界的主流产品。而同时Oracle数据库也是一个非常复杂的数据库管理产品,其发展历经三十余载,Oracle数据库的在线帮助文档就达一万页以上。显然,这上万页的文档并不都会对我们的工作有所帮助。
那么如何有效、快速的从这上万页的文档中抽取出对我们日常工作最有帮助的知识内容呢?而这正是本书的出发点。
本书在我多年的项目实践经验和培训授课经验的基础上,在Oracle数据库的相关知识中,提取了与日常工作结合最紧密的部分,同时结合10gOCP的考试知识点,对Oracle10g数据库的方方面面进行了详细的介绍。
本书不但详细介绍了与Oracle数据库相关的概念,同时阐述了其概念背后的原理,还提供了详细的操作步骤,可供读者根据书中的案例,一步一步的自行操作实践并加以确认。通过阅读本书,读者将会对Oracle10g数据库的整体形成一个总的概念,包括数据库的体系结构、数据库的管理等。在掌握了这些知识以后,就可以根据自己的兴趣爱好,对Oracle数据库的其他方面自行展开更加深入的研究了,比如配置和管理RAC、Data Guard以及Stream等。
尽管本书立足于Oracle10g版本,但是其中很大一部分内容都适用于9i版本。凡是9i没有而10g新增加的功能,在书中都会特别指出。
读者对象
本书假定读者不熟悉Oracle10g数据库,是一个还在Oracle数据库的门外徘徊或者刚入门的新手,而且希望在较深的程度上掌握其功能;或者读者对Oracle 9i有所了解但对10g不了解,希望能够较深入的了解10g的一些新功能;或者已经使用过一段时间的Oracle数据库,但对其中的工作原理不甚了了,而希望从其本质上对数据库的工作原理有所了解。不管您属于何种情况,都将从本书中收益。本书也非常适用于作为各大中专院校相关专业的培训教材、教学辅导和参考用书。
为了更好的理解本书的内容,要求读者最好能够具备以下知识:
1) 基本的SQL语句,了解select、insert、delete、update这四种SQL语句最基本的写法。
2) 基本的Linux操作命令。由于本书中数据库安装在Linux操作系统中,因此会牵涉到一些很简单的Linux命令,比如cd、cp、mv、pwd、ls等。当然,您也可以在遇到不了解的Linux命令时,查阅相关的命令手册。
本书结构
本书共分为21章,其中的格式和风格基本上都是一样的:
1) 各个章节的排列顺序依照循序渐进的原则,后面章节中可能会出现前面章节所描述的概念,因此,建议读者按照章节的先后顺序进行阅读。
2) 每章的开头内容除了是本章内容的简单说明以外,还列举出在学完本章以后,读者所应该掌握的知识点。读者可以在阅读完毕以后,查看这些知识点,检查自己是否已经熟练掌握它们了。
3) 对于每一章来说,其内容也遵循由浅入深的原则。其描述顺序基本都是先描述现象,再阐述本质,最后用实例来证明其本质。
下面针对每一个章节进行一个简单的说明。
第一章:对Oracle10g数据库做一个整体介绍,对数据库的整个体系架构和存储架构做了一个简单的阐述。
第二章:如何安装Oracle10g数据库软件(包括安装前的配置和准备工作)以及如何创建数据库。
第三章:什么是数据字典以及它的重要作用。
第四章:对初始化参数文件(包括pfile和spfile)的管理。
第五章:在Oracle数据库的体系架构中有关实例部分的工作原理,深入的探讨了各个内存组件和后台进程是如何协作完成工作的。
第六章:在Oracle数据库的体系架构中有关物理存储部分的内容,包括表空间、数据文件以及联机日志文件的管理。
第七章:Undo表空间的工作原理以及对它的管理。
第八章:对用户、权限和角色管理,包括各种认证方式以及profile的管理。
第九章:如何在Oracle数据库中管理表、索引等各种对象,比如创建表、收缩表、转移表等。
第十章:闩锁(latch)、锁定(lock)的使用,和如何解决锁定冲突等问题。
第十一章:在Oracle数据库中的网络服务的概念以及如何配置网络环境。
第十二章:有关Oracle数据库备份恢复的原理,比如检查点SCN号在其中所起到的作用等。并着重介绍了各种情况下,如何进行手工的备份和恢复。
第十三章:什么是RMAN,以及在各种情况下,如何使用RMAN进行备份和恢复。
第十四章:在10g数据库中所引入的闪回体系,包括闪回数据库、闪回删除、闪回表等功能。
第十五章:详细介绍了10g中新引入的自动化管理功能,包括整个自动化管理体系架构,如何生成自动化报表,自动化诊断功能,以及如何使用各种顾问来帮助我们更好的管理数据库的性能问题。
第十六章:如何使用10g新推出的自动存储管理(ASM)功能。
第十七章:如何使用资源管理器对数据库的整个资源进行管理和控制。
第十八章:如何使用调度管理器来规划任务。
第十九章:集中讨论了在10g数据库中,转移数据的各种方法,包括数据泵、导出导入工具、外部表、可传输表空间以及可传输数据库等。
第二十章:集中讨论了有关数据库安全方面的问题。包括如何设置审计、如何使用VPD、如何使用TDE、如何对备份文件进行加密等。
第二十一章:在Oracle数据库中,对于全球化特性的支持。
本书约定
1) 对于Oracle数据库产品来说,出现过很多版本,从8i、9i到10g。而且在2007年7月,Oracle公司已经正式发布了11g版本的数据库。但目前该版本还远没有大规模的广泛应用。应该说,9i和10g是目前主流的数据库版本。本书中在提到Oracle 9i时,都是针对Oracle9.2.0以后的版本,而在提到Oracle10g时,则都是指Oracle 10.2.0以后的版本。
2) 书中为了简便,在不影响读者阅读的基础上采用了简称,比如9i表示Oracle 9i,10g则表示Oracle10g。
3) 在本书中的有关Oracle数据库的案例中,如无特别说明,都是在RedHat Linux 4.0的操作系统上完成的。
4) 为了避免篇幅过长,本书在显示实验结果(主要是在SQL*Plus里进行的操作)时,在不影响阅读的前提下,大都去掉了不必要的空行,有的还去掉了执行结果(比如发出startup或shutdown命令时的输出信息就基本都不显示)。同时在某些执行结果很长的实验里(比如使用RMAN进行备份和恢复时),只摘取了其中比较重要的几个部分,其余部分一律用省略号来表示。
5) 本书中的插图和试验结果可能会与读者实际操作的结果不同,这主要是由于读者的试验环境(比如CPU的转速、物理内存的大小、数据库的参数配置等)的不同而引起的。在此特别说明,一切以实际情况为主。
致谢
对于一本书的写成来说,就像曾经的体育评论员黄建翔所说的:“这个时候,你不是一个人在战斗”。确实如此,这本书的写成,不是我一个人的劳动成果,有很多的人都对此付出了努力。
我第一个要感谢的人就是IT168网站的熊建国老师。可以毫不夸张的说,没有他的提携和鼓励,就不会有这本书最终出版。
然后,我要感谢博文视点的胡辛征老师,他就像一部电影的制片人,参与了整本书的策划过程以及前期和后期的一些繁琐事务,并负责书稿的各个相关流程事宜。让我可以专心于写书本身,而不用多考虑其他的事情。而且,他还对本书提供了非常多的、非常宝贵的意见和建议。
第三,我感谢本书的编辑江立老师,她就像个技艺超群的化妆师,对整本书的文字和排版进行了校正和美化,经过她“化妆”以后的书稿,给我带来的诧异,不亚于看到了丑小鸭变成了白天鹅。
最后,我还要感谢我的家人,没有他们在生活上的照顾和精神上的鼓励,我也不可能有足够的精力和信心来完成本书的写作。
注:本前言与实体书不完全一致,而是对实体书的前言做了一定的补充。