内容简介
本书讲述了Linux enterprise平台上Oracle Database 10g的安装和配置,涵盖了Red Hat Linux和United Linux,以及Linux平台上Oracle Database 10g的设置、管理、监视和调整方法的所有内容。还特别介绍了高可用性解决方案的实现方法,以及备份、恢复和复制的处理方法。相信本书会成为所有在Linux环境下工作的Oracle DBA的权威指南。
Linux正在以惊人的速度变得愈加流行,然而它出现的时间并不长。为了理解Linux,有必要先了解一下它的历史。Linux的风格与UNIX操作系统类似,因此要完全了解Linux的发展历史也应对UNIX的历史有所了解。 UNIX的历史 UNIX操作系统起源于20世纪60年代后期AT&T公司的贝尔实验室,当时的目标是设计一个在PDP-7上运行的操作系统。Ken Thompson和Dennis Ritchie完成了主要的开发工作,并于1971年发布了UNIX的第一个版本。后来很快又出现了其他几种发行版,不过第2个主发行版是1973年发布的Release 4。Release 4处于相当重要的地位,它是第一个用C语言编写的UNIX。有趣的是,C语言与UNIX操作系统是同时开发的,但是直到C语言足够稳定以后UNIX操作系统才改用C语言编写。 1975年发布了UNIX的第6个版本,这是第一个非贝尔实验室发布的UNIX版本。它是UNIX操作系统在其他公司和开发社区繁荣发展的开端,此后出现了各种不同的“类UNIX”(UNIX-like)操作系统。这些操作系统有共同的命令集和API,但是由于商标和所有权的不同,大部分都采用了不同的名字,并且它们的市场目标也各不相同。 例如,1980年微软公司发布了一个名为Xenix的类UNIX操作系统。它能在装有Intel处理器的PC上运行。1982年和1983年AT&T 公司的UNIX System Group(USG)分别发布了System III和System V,这两个版本都是针对小型机的。1984年加州大学也发布了他们自己的UNIX操作系统,称为UNIX 4.2 BSD,该版本受到了DEC和Sun等公司的欢迎。 在UNIX的各种版本经过若干年的竞争以后,UNIX System V release 4出现了。该发行版包含了USG UNIX、BSD UNIX以及Xenix的特性,并将它们加入了UNIX的规范。后来,AT&T公司将UNIX System Group独立出来,变成UNIX Systems Lab(或称USL)。就在这个时候,Linux发布了它的第一个版本。 1993年Novell公司收购了UNIX System Lab,并将UNIX的商标和规范转让给X/Open集团。这个时候全世界已经开发出了许多UNIX的变体(variety)以及类UNIX操作系统,并投入使用。在各种版本中,UNIX操作系统与类UNIX操作系统的唯一区别在于它们是否使用了UNIX商标。 Linux的起源 1991年,芬兰赫尔辛基大学的Linus Torvalds开始着手开发一个新的操作系统,该操作系统与UNIX相似,但却不存在专利与商标方面的问题。Torvalds希望开发一个公开的操作系统,其源代码可以免费发布,并且也不会侵犯他人的商标权。这样就诞生了Linux操作系统。 Linux操作系统是基于GNU发布的,GNU要求所有的软件和源代码都必须公开。GNU项目起始于1984年开发的一个公共域C语言编译器。1991年Torvalds开始开发他自己的操作系统时,GNU的C语言编译器(GCC)已经发布,并且可以免费使用。 GNU项目产生于自由软件基金会(Free Software Foundation,FSF)。FSF是一个非营利性的组织,成立于1985年,其目标是支持自由软件运动,尤其是关于GNU项目的。GNU通用许可证(GNU General Public License,GPL)则用于促进和保护自由软件。FSF拥有大部分GNU软件的版权,并且强制使用这些版权。GNU项目至今仍然非常流行。 此后Linux很快就发布了。不过Linux的第一个发行版主要是用于桌面系统和开发工作,并不适用于服务器系统,因为它还缺乏对大型系统的支持。为了让Linux在服务器上运行,必须增加对多处理器、大内存、各种硬件以及Oracle等应用软件的支持。Linux在以后各个版本的内核中逐步加入了对这些特性的支持。 1994年发布了1.0版的Linux内核。虽然它可以供桌面用户和开发人员使用,但却没有提供服务器所需的支持。2.0版的Linux内核到1996年才最终发布。2.0版的内核可以支持多处理器,并且I/O子系统也更加健壮。1999年发布的2.2版进一步增强了这些功能。2001年发布的2.4版提供了一个稳定的、高性能的操作系统,它对2.2版的内核做了进一步的改进。在2.6版的内核(注意,发布的版本号都为偶数)中,对I/O子系统做了重大改进,并且可以支持更大的内存。 目前许多硬件厂商都提供了对Linux的支持,并提供了相应的驱动程序。现在可以使用SCSI或SAN构建超大内存(64GB)和超大磁盘(若干TB)的Linux系统。除了系统自身的健壮性以及硬件厂商的广泛支持以外,Linux还得到了Oracle等软件厂商的支持。现在Oracle的所有主流产品都可以支持Linux操作系统,并且Oracle的大部分附加产品也可以支持Linux。 Linux与UNIX的发展历程 前面两节介绍了Linux与UNIX的发展历程,下面做个小结: ● 1969年,AT&T公司贝尔实验室的Ken Thompson和Dennis Ritchie开始开发针对PDP-7的UNIX操作系统。 ● 1971年,UNIX的第1版发布。 ● 1973年,UNIX的第4版开始采用C语言编写,并且与C语言一起发布。 ● 1975年,UNIX的第6版发布,这是第一个非贝尔实验室发布的版本。 ● 1980年,微软公司发布了Xenix。 ● 1982年,AT&T公司的Unix System Group(USG)发布了System III。 ● 1983年,UNIX Sytem V发布。 ● 1984年,FSF开始构造GNU项目的C语言编译器。 ● 1984年,加州大学Berkeley分校发布了4.2BSD。 ● 1989年,UNIX System V release 4发布,统一了System V、BSD和Xenix。 ● 1991年,USL(Unix Systems Lab)从AT&T独立出来。 ● 1991年,芬兰赫尔辛基大学的Linus Torvalds开始创建Linux,并发布了第一个版本。 ● 1993年,Novell收购USL。 ● 1993年,Novell将UNIX商标及其规范转让给X/Open。 ● 1994年,Linux内核1.0版发布,同年Red Hat诞生。 ● 1996年,Linux内核2.0版发布,可以支持多处理器。 ● 1996年,Los Alamos国家实验室使用68台运行Linux操作系统的PC机构建了一个 并行处理的超级计算机。 ● 1999年,Linux内核2.2版发布。 ● 2001年,Linux内核2.4版发布。 ● 2004年,Linux内核2.6版发布。 从上面的发展历程可以看出,Linux在很短的时间内取得了长足的发展。 Linux的变体 Linux流行以后,很多公司开始发布商业版的Linux。尽管那些“顽固”的Linux追随者仍然乐于下载源代码然后手工构建Linux操作系统,但对于大多数人来说,这毕竟不是一种可行的方式。此外,很多公司也开始考虑采用Linux来运行关键的应用程序,除了希望得到一个经过测试的、性能稳定的发行版以外,这些公司还希望部署设置能够简单一些,并且能够获得技术支持。 早期的发行版本有曼彻斯特大学于1992年发布的MCC Interim Linux。Texas A&M大学也发布了一个Linux的版本,称为TAMU。但是,这两个版本都称不上是商业版。为了改进软件的更新功能,Patrick Volkerding创建了Slackware,并于1993年7月份发布,也是现存最早的Linux发行版。Slackware Linux又被称作纯粹的Linux发行版,因为它没有加入任何其他Linux发行版所没有的应用程序和GUI工具。 目前全世界已经有几百种Linux发行版,但是为了让Oracle的特性更好地支持Linux操作系统,Oracle只选择了少数几种Linux发行版。选择的标准是基于发行版的质量、流行程度以及供应商技术支持的质量。在目前可用的Linux发行版当中,Oracle可以支持Red Hat和United Linux。 Red Hat成立于1993年,是当今最大的Linux公司之一。Red Hat的流行很大程度上得益于与各大硬件厂商的合作。Dell、HP和IBM都可以支持Red Hat Linux。Red Hat Linux Enterprise 3.0和Red Hat Linux Advance Server都可以作为运行Oracle 10g的优秀平台。 SUSE Linux在欧洲和亚洲非常流行,并且正在向全世界范围发展。2003年Novell收购了SUSE以后,SUSE Linux又重新发展起来。SUSE Linux Enterprise Server 9 (SLES 9)是第一个采用2.6内核的大规模商业发行版。Dell、HP和IBM等公司也同样支持SUSU Linux。与Red Hat Linux一样,SUSE Linux Enterprise Server(SLES)也可作为Oracle 10g的运行平台。 为运行Oracle购买Linux发行版时,最重要的是看它能否提供所需的技术支持。许多公司都与硬件厂商签有协议,如果遇到问题,无论软件方面还是硬件方面的,只需打个电话即可。选择一个能够提供所需技术支持的公司,这一点相当重要。 Oracle的发展史 与Linux操作系统相比,Oracle的历史更加悠久。这一节我们主要介绍Oracle的发展历程,下一节还将继续介绍Oracle在Linux平台上的发展历程。 ● 1977年,Larry Ellison、 Bob Miner和Ed Oates等人组建了Relational软件公司(Relational Software Inc.,RSI)。他们决定使用C语言和SQL界面构建一个关系数据库管理系统(Relational Database Management System,RDBMS),并很快发布了第一个版本(仅是原型系统)。 ● 1979年,RSI首次向客户发布了产品,即第2版。该版本的RDBMS可以在装有RSX-11操作系统的PDP-11机器上运行,后来又移植到了DEC VAX系统。 ● 1983年,发布的第3个版本中加入了SQL语言,而且性能也有所提升,其他功能也得到增强。与前几个版本不同的是,这个版本是完全用C语言编写的。同年,RSI更名为Oracle Corporation,也就是今天的Oracle公司。 ● 1984年,Oracle的第4版发布。该版本既支持VAX系统,也支持IBM VM操作系统。这也是第一个加入了读一致性(read-consistency)的版本。 ● 1985年,Oracle的第5版发布。该版本可称作是Oracle发展史上的里程碑,因为它通过SQL*Net引入了客户端/服务器的计算机模式,同时它也是第一个打破640KB内存限制的MS-DOS产品。 ● 1988年,Oracle的第6版发布。该版本除了改进性能、增强序列生成与延迟写入(defeered writes)功能以外,还引入了底层锁。除此之外,该版本还加入了PL/SQL和热备份等功能。这时Oracle已经可以在许多平台和操作系统上运行。 ● 1991年,Oracle RDBMS的6.1版在DEC VAX平台中引入了Parallel Server选项,很快该选项也可用于许多其他平台。 ● 1992年,Oracle 7发布。Oracle 7在对内存、CPU和I/O的利用方面作了许多体系结构上的变动,这是一个功能完整的关系数据库管理系统,在易用性方面也作了许多改进,引入了SQL*DBA工具和database角色。 ● 1997年,Oracle 8发布。Oracle 8除了增加许多新特性和管理工具以外还加入了对象扩展(object extension)特性。 ● 2001年,Oracle 9i release 1发布。这是Oracle 9i的第一个发行版,包含RAC(Real Application Clusten)等新功能。 ● 2002年,Oracle 9i release 2发布,它在release 1的基础上增加了集群文件系统(cluster filesystem)等特性。 ● 2004年,针对网格计算的Oracle 10g发布。该版本中Oracle的功能、稳定性和性能的实现都达到了一个新的水平。 Oracle在Linux平台上的发展历程 从上一节可以看出,Oracle已经有相当长的历史了。事实上,Oracle的历史比Linux更长,但Oracle将产品移植到Linux的时间却不长。Oracle发布的第一个Linux版的RDBMS是8.0.4,但它并不是第一个可在Linux上运行的产品。1998年7月Oracle就曾宣布Oracle 7 for SCO UNIX可以在Linux上运行。而8.0.4版一直到1998年年末才发行。 这对于Oracle是一个重大的转变,因为从此以后Oracle可以使用一个能与Windows抗衡的低成本操作系统。几大主流的公司,如Dell、HP和IBM等都纷纷加入了Linux的行列。与此同时,Oracle正在开发最新的版本,并通过与Linux厂商的合作来改进对其产品的支持。Oracle在稳定性与性能方面对操作有许多要求,包括: ● 异步I/O 操作系统的异步I/O功能可以将I/O操作排队,从而避免调用进程阻塞(等待)。 ● 支持多处理器 Oracle可以很好地支持两个或两个以上的处理器。Linux 2.0内核中加入了对多处理器的支持,在2.4版中做了更大改进。 ● 支持大内存 Intel/AMD的32位系统都是基于32位内存地址的,最多允许系统使用4GB的物理内存。最近在这方面作了一些修改,允许使用超过4GB的内存。当然,对于64位的系统,本身就可以访问TB级的内存空间。 ● 健壮的I/O子系统 要在大型系统中使用Oracle,必须有一个可扩展、功能强大且足够健壮的I/O子系统,这需要能够支持RAID控制器、SAN或NAS存储等。 ● 对硬件的广泛支持 必须有多种硬件可供选用,如网络硬件、I/O子系统、磁盘备份等。 尽管Oracle发布了一个官方的、针对Linux的RDBMS版本,但操作系统仍需改进。随着Linux内核的改进,Oracle RDBMS及硬件厂商方面也取得了进步。 Oracle公司的集群产品Oracle Parallel Server(OPS)需要硬件厂商提供操作系统相关(Operating System Dependent,OSD)层,它在Linux下工作不是很好,因为操作系统不是由硬件厂商开发的。2001年,在发布Oracle 9i时,Oracle公司随之发布了一项新的集群技术——Oracle RAC。 Oracle RAC允许多台运行Linux的计算机协同工作,如同只有一个系统存在。这些计算机可以让多个Oracle实例访问同一个数据库,这就是集群。Oracle 9i和Linux上的RAC集群在过去几年里变得非常流行。实际上本书作者就多次参与过Linux RAC集群的工作。 2002年5月,Oracle 9i R2发布,这是Oracle在Linux上的又一次重大进步,因为Oracle和Oracle RAC都有所改进。Oracle 9i R2提供了更多适合于网络计算的安全特性。 2002年6月5日,Larry Ellison宣布Linux平台将成为Oracle将来的战略方向,这可以说是Linux的最大收获。这一消息令Linux备受关注,并且提升了Linux在Oracle社区的受欢迎程度。Oracle也加大了对Linux操作系统的市场投入,使得采用Linux运行Oracle RAC的客户数目得以增长。 同一年,Oracle又通过Oracle 10g的网格计算模型使RAC集群再次取得较大进展。网格计算就是将许多RAC集群连接起来,允许大量计算机系统和存储系统协同工作,从而提供用户所需的功能。 有了Linux版的Oracle 10g,就可以用最新的操作系统运行最新的数据库管理系统,当然,这里是指在新版本面世以前。 Linux平台上的Oracle产品概述 目前Oracle所有的产品都可以在Linux上运行,实际上Oracle自身的业务也是使用Oracle电子商务套件(eBussiness Suit)在Linux上运行的。这一节我们将对目前可以在Linux上运行的Oracle产品进行简要介绍。 Oracle RDBMS 毫无疑问,Oracle RDBMS一定是可以支持Linux的。RDBMS是Oracle的数据库产品,可以快速安全地管理大量数据。RDBMS的任务只有一个,那就是管理数据,保护数据不受损失是它的一项重要职责。Oracle RDBMS最初是为UNIX操作系统设计的,不过它的体系结构也非常适合于Linux。虽然Oracle也可以在非类UNIX的系统上运行,但它还是最适合于这些类UNIX的操作系统,第3章将对此进行介绍。 Oracle RDBMS包含许多特性及附加程序,它们共同构成一个完整的RDBMS包。除了Oracle RDBMS之外还有Oracle RAC以及许多其他特性。 ● 可扩展性 Oracle RDBMS是可扩展的,可以增加CPU的数目或者内存的容量,从而支持更多的用户处理程序。Oracle在扩展后还可以支持多种不同的操作系统和硬件平台。 ● 性能 Oracle保持着性能记录,多年以来,Oracle在大多数标准数据库基准程序(benchmark)中的性能都是最高的。 ● 业务持续性 Oracle除了具有备用数据库功能以外,还具有强大的备份和恢复功能。 ● 集群技术 Oracle RAC集群是目前最先进的集群技术。Oracle RAC集群是可扩展的,可以支持许多集群节点和各种硬件平台。Oracle RAC集群既提供了可扩展的性能,又提供了故障切换(failover)的功能。Oracle RAC集群构成了网格计算的基础。 ● 应用开发 Oracle支持多种数据库接口,如XML,它可以与Oracle JVM紧密集成。 ● 安全性 Oracle具有许多安全方面的特性,以确保数据安全可靠。这些特性包括强大的数据加密系统和虚拟私有数据库。 ● 网格计算 网格计算是Oracle 10g提供的一项新特性,它允许多个运行RAC的Oracle数据库构成一个网格计算机。网格计算能根据需要提供巨大的容量,并且具有故障切换的功能。 Oracle数据库是一个功能完备的产品,它不仅提供了所需的性能与可扩展性,而且提供了许多其他同类产品无法提供的特性。除了数据库产品以外,Oracle还提供了一个功能完备的web服务器套件和商业应用套件,下面几节将对此进行介绍。 Oracle AS Oracle应用服务器(Application Server)是一组提供高性能网络服务器的工具,它可以看成是Oracle数据库服务器(Database Server)的补充。Oracle应用服务器包括以下部分: ● Oracle HTTP服务器 Oracle HTTP服务器就是一个Apache Web服务器,不过它有Oracle新特性,与Apache百分之百兼容。Oracle HTTP服务器中包含IE(Internet Explorer)及Netscape的插件,还包括一个Perl解释器和以及Apache Web服务器的动态监视。 ● J2EE Oracle J2EE是一个支持Web服务的Java服务器环境,可以支持SOAP、UDDI和UDDI,并且还支持JSP和servlet。 ● JDeveloper JDeveloper是Oracle公司开发的Java设计、开发、优化和部署工具。JDeveloper可用于快速部署企业的J2EE应用。 ● 动态内容 Oracle的Internet应用程序还支持PHP动态网页程式语言。使用PHP和Oracle数据库可以部署动态内容以及应用。 ● portal Oracle AS portal提供了一个可以快速部署电子商务门户网站的环境。 ● Single Sign-on Oracle Single Sign-on为访问应用程序、门户网站和Web服务提供了基础设施,从而减少了必须为每个应用程序保存记录的需求。 ● Forms Service 使用Forms Service可以通过Web应用程序轻松地部署Oracle Forms,并且可以快速、简单地移动Form应用程序。 ● Reports Service 该工具允许通过Web界面使用Oracle的报表服务(reports service)。 ● Wireless Oracle As含有对无线应用的支持,可以很容易地将数据和应用程序部署到无线设备上。 ● Web Cache 使用Oracle的Web Cache不仅能缓存互联网的内容,而且可以缓存数据库的信息,主要就是为了改进应用程序的性能。 Oracle协作套件 Oracle协作套件(Collaboration Suite)是一个相对而言比较新,且完整的办公管理套件,其目标是取代Microsoft Exchange等其他办公套件的插件。Oracle的协作套件包含一组功能完整的应用程序,可用作整个公司的基础设施: ● Email 协作套件中含有一个完整的email管理系统,可以支持IMAP4(Internet Message Protocol)、POP3(Post Office Protocol)等协议,还可以通过LDAP(Light-weight Directory Access Protocol)支持目录服务。 ● 日历 协作套件中提供了一个功能完整的日历程序,包括个人及小组日程表,并且提供了强大的搜索功能。此外,日历程序还可以检测冲突,并给出解决方案。 ● 文件共享 Oracle Files是一个健壮且可扩展的文件共享程序,其中加入了Oracle Ultra Search功能,从而可以快速有效地搜索TB级的数据。 ● 语音邮件与传真 Oracle的语音邮件与传真功能可以让Oracle安全集中地存储重要的商务信息,它提供了很好的性能与安全保障,并且允许从公司的任何地方访问这些信息。 ● 网络会议 网络会议(Web Conferencing)使得两个或两个以上的人员可以以经济而有效地方式进行在线协作,不仅可以进行在线讨论,而且可以通过网络共享应用程序。 如上所述,Oracle协作套件提供了一组功能完整的应用程序,有助于提高商业效率。 Oracle电子商务套件 Oracle电子商务套件(E-Business Suite)以前被称为Oracle Application,它含有上百个模块,覆盖了从财务与供应链管理到采购的各个方面。事实上,使用Oracle电子商务套件最大的好处就在它集成了大量的模块。下面对主要模块做简要介绍: ● 财务 财务类模块主要是一些基于Oracle General Ledger的模块,其中包括Accounts Payable、Accounts Receivables、Cash Management、Assets、Budgets以及Finacial and Sales Analyzers等。 ● 人力资源 人力资源类模块包括Human Resources、Payroll、Time and Labor、Recruiting和Advaced Benefits等。 ● 生产制造 生产制造类模块包括Bills of Materials、Cost Management、Inventory、Order Management、Warehouse Management、Order Fullillment以及其他一些模块。 ● 市场 市场类模块是基于Oracle CRM的,它包括Customer Intelligence、Marketing Intelligence和Trade Management等。 ● 销售 销售类模块包括Customer Intelligence、Quoting、Sales Analyzer和Telesales等。 除此之外,Oracle电子商务套件还包括一些与Advanced Planning、Business Intelligence、Contracts、e-Commerce、Learning Management、Professional Services、Product Development、Projects及Treasury有关的模块。 Oracle电子商务套件功能完整,完全可以胜任您的业务。 Oracle电子商务套件从11.0.5版开始,都可以在Linux上运行。实际上,Oracle公司自身的业务现在也是运行在Linux平台的电子商务套件上的。Linux之所以能够成为电子商务套件的流行平台,不仅是因为它的价格优势与灵活性,还因为它可以支持各种硬件平台,并且具有很高的性能。 实际上在过去几年里,使用基于Linux的RAC集群运行Oracle电子商务套件已经变得非常流行。RAC集群为电子商务套件的运行提供了一个可扩展的稳定平台,而Linux则是Oracle RAC集群的首选平台。这就是Linux与RAC集群的组合之所以如此流行的原因。 小结 虽然Linux出现较晚,但它却很快流行起来。短短15年之内,Linux就从最初的创意变成了操作系统领域的重要竞争者。 即使Oracle接受Linux的时间并不长,但也取得了长足的发展,相信以后Oracle数据库将主要依靠Linux操作系统和大众化的硬件。随着硬件的进步和市场的发展,这两者的结合将具有极强的竞争力。未来几年内,将会出现在Linux上运行的64位Oracle系统,并且还会出现越来越大的、基于Linux的存储系统。 在接下来的内容中您将会看到,Linux仍在不断变化,Oracle也是如此。Linux对Oracle来说是最理想的平台,因为所有有利于提升Oracle性能的变化都可以很容易地整合到Linux操作系统里面。即便是现在,Oracle集群文件系统(Oracle Cluster File System ,OCFS )和自动存储管理(Automatic Storage Management,ASM)也可以整合进Linux操作系统。相信不久以后,Oracle与Linux社区的关系将越来越密切,Oracle数据库与Linux操作系统都会越做越好。