第1章 Oracle 11g概述
( 视频讲解:87分钟)
本章首先将介绍一些与关系型数据库密切相关的理论基础知识,并对Oracle 11g新增加的功能进行概要介绍;然后讲解如何安装和卸载Oracle 11g数据库;接着讲解Oracle 11g的3种常用管理工具;最后为读者介绍如何启动和关闭数据库实例。
通过阅读本章,您可以:
理解关系型数据库的基本理论
了解Oracle 11g的新功能
掌握Oracle 11g数据库的安装与卸载
掌握Oracle 11g的3种常用管理工具
掌握如何启动与关闭数据库实例
1.1 简述Oracle的发展史
Oracle,西方人认为有“神谕、预言”之意,中国人则译作“甲骨文”,该软件是当今世界上最强大的数据库软件之一。所有这一切要从IBM的一篇论文谈起,1970年6月,IBM公司的研究员埃德加·泰德·科德(Edgarh Ted Cod)发表了一篇著名的论文——《大型共享数据库数据的关系模型》,这可以称为数据库发展史上的一个转折点。在当时还是层次模型和网状模型的数据库产品占据市场主要地位的情况下,这篇论文拉开了关系型数据库软件革命的序幕。
1977年6月,拉里·埃里森(Larry Ellison)与鲍勃·迈纳(Bob Miner)和埃德·奥茨(Ed Oates)在硅谷共同创办了一家名为“软件开发实验室”的软件公司(英文缩写SDL,Oracle公司的前身)。在奥茨看到了科德的那篇著名的论文连同其他几篇相关的文章之后,非常兴奋,他找来埃里森和迈纳共同阅读,埃里森和迈纳也预见到关系型数据库软件的巨大潜力。于是,数据库界的三位巨人开始共同筹划构建可商用的关系型数据库管理系统(RDBMS),并把这种商用数据库产品命名为Oracle。因为他们相信,Oracle(字典里的解释有“神谕、预言”之意)是一切智慧的源泉,就这样,堪称当今世界最强大、最优秀的Oracle数据库诞生了。
1979年,“软件开发实验室”更名为“关系软件有限公司”(英文缩写RSI)。同年夏季发布了可用于DEC公司的PDP-11计算机上的商用Oracle产品(Oracle称之为第2版),这个数据库产品整合了比较完整的SQL实现,其中包括子查询、连接及其他特性。
1983年3月,RSI发布了Oracle第3版,这个版本是用C语言重新编写的。由于C编译器具有很好的可移植性,从此之后,Oracle产品有了一个关键的特性——可移植性。
1984年10月,Oracle发布了第4版产品。产品的稳定性总算得到了一定的增强,用迈纳的话说,达到了“工业强度”。
1985年,Oracle发布了5.0版,这个版本算得上是Oracle数据库诞生以来比较稳定的版本。这也是首批可以在Client/Server模式下运行的RDBMS产品,在技术方向上,Oracle数据库始终没有落后。
1988年,Oracle发布了第6版,这个版本引入了行级锁(row-level locking)这个重要的特性,并且这个版本引入了还算不上完善的PL/SQL(Procedural Language/SQL)语言。第6版还引入了联机热备份功能,使数据库能够在使用过程中创建联机的备份,这极大地增强了可用性。
1992年6月,Oracle发布了第7版,该版本增加了许多新的特性:分布式事务处理功能、增强的管理功能、用于应用程序开发的新工具以及安全性方法。这一版本才是真正出色的产品,取得了巨大的成功,Oracle借助这一版本的成功在数据库市场确立了主导地位。
1997年6月,Oracle发布了第8版,该版本支持面向对象的开发及新的多媒体应用,这个版本也为支持Internet、网络计算等奠定了基础,同时这一版本开始具有同时处理大量用户和海量数据的特性。
1998年9月,Oracle公司正式发布Oracle 8i。i代表Internet,这一版本中添加了大量为支持Internet而设计的特性。这一版本为数据库用户提供了全方位的Java支持。Oracle 8i成为第一个完全整合了本地Java运行时环境的数据库,用Java就可以编写Oracle的存储过程。
在2001年6月的Oracle OpenWorld大会中,Oracle发布了Oracle 9i。在Oracle 9i的诸多新特性中,最重要的就是Real Application Clusters(RAC)——集群技术。
2003年9月8日,在旧金山举办的Oracle OpenWorld大会上,Ellison宣布下一代数据库产品为Oracle 10g。Oracle应用服务器10g也将作为Oracle公司下一代应用基础架构软件集成套件,g代表grid——网格,这一版最大的特性就是加入了网格计算的功能。
2007年11月,Oracle 11g正式发布,功能上大大加强,这是最常用的版本,也是本书中使用的Oracle版本。11g是Oracle公司30年来发布的最重要的数据库版本,根据用户的需求实现了信息生命周期管理等多项创新,大幅地提高了系统性能的安全性,全新的Data Guard最大化了可用性,利用全新的高级数据压缩技术降低了数据存储的支出,明显缩短了应用程序测试环境部署及分析测试结果所花费的时间,增加了RFID Tag、DICOM医学图像、3D空间等重要数据类型的支持,加强了对Binary XML的支持和性能优化。
最新的Oracle版本为Oracle 12c,c表示cloud——云计算。
一直以来,Oracle都以绝对的优势占据了数据库市场的第一位。例如,在2019年做出的市场调研中显示,56%的市场份额标志着Oracle的地位难以撼动,而IBM以15.9%占据第二位,Microsoft以9.5%占据第三的位置,而其他数据库厂商占有的市场份额很小,2019年度主流数据库市场占有率如图1.1所示。
图1.1 2019年度主流数据库市场占有率
随着人类社会信息资源的不断增长,更加需要强大而安全的数据库管理系统,这导致Oracle数据库的市场占有率在这些年来不断地增加,其独占鳌头的市场地位是不容置疑的。
1.2 关系型数据库的基本理论
数据库技术是应对信息资源(即大量数据)的管理需求而产生的,随着信息技术的不断发展,尤其人类迈入网络时代后,社会信息资源在爆炸式地增长,对数据管理技术也随之不断地提出更高的要求,其先后经历了人工管理、文件系统、数据库系统3个阶段。在数据库系统中,数据模型主要有层次模型、网状模型和关系模型3种(另外一种面向对象模型还处在探索研究中),目前理论成熟、使用普及的模型就是关系模型——关系型数据库的理论基础。
1.2.1 关系型数据库与数据库管理系统
关系型数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据,现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
关系模型以二维表来描述数据。在关系模型中,每个表有多个字段列和记录行,每个字段列有固定的类型属性(如数字、字符、日期等类型)。关系模型数据结构简单、清晰、具有很高的数据独立性,因此是目前主流的数据库数据模型。
在关系数据模型中,关系可以看成由行和列交叉组成的二维表格,表中一行称为一个元组,可以用来标识实体集中的一个实体。表中的列称为属性,给每一列起一个名称即为属性名,表中的属性名不能相同。列的取值范围称为域,同列具有相同的域,不同的列也可以有相同的域。表中任意两行(元组)不能相同。能唯一标识表中不同行的属性或属性组(即多个属性的组合)称为主键或复合主键。
尽管关系与传统的二维表格数据文件具有类似之处,但是它们又有区别,严格地说,关系是一种规范化的二维表格,它具有如下性质。
属性值具有原子性,不可分解。
没有重复的元组,即没有重复的行。
理论上没有行序,但是在使用时有时可以有行序。
在关系型数据库中,关键码(简称键)是关系模型的一个非常重要的概念,它通常是行(元组)的一个或几个列(属性)。如果键是由一个列组成,则称之为唯一键;若是由多个列(属性)组成的,则称之为复合键,键的主要类型如下。
超键:在一个关系中,能唯一标识元组的属性或属性集称为关系的超键。
候选键:如果一个属性集能唯一标识元组,且又不含有多余的属性,那么这个属性集称为关系的候选键。
主键:如果一个关系中有多个候选键,则选择其中的一个键为关系的主键。用主键可以实现关系定义中“表中任意两行(元组)不能相同”的约束。这里以管理学生信息为例,我们在“学生信息表”中设置学号、姓名、性别、年龄、院系、班级等列。在该表中,“学号”能够唯一标识一名学生,因此,把学号作为主键是最佳的选择,而如果把“姓名”作为主键则会存在问题,因为有可能存在同名的学生。为此,最好创建一个单独的键将其明确地指定为主键,这种唯一标识符在现实生活中很普遍,如身份证号、银行卡号、手机号、发票号等。
外键:如果一个关系R中包含另一个关系A的主键所对应的属性组T,则称此属性组T为关系R的外键,并称关系A为参照关系,关系R是依赖关系。为了表示关联,可以将一个关系的主键作为属性放入另外一个关系中,第二个关系中的那些属性就称为外键。这里以商品销售为例,在填写一张商品销售单时,可以将商品销售信息分为两大类:第一类是单据的主体信息(销售主表),如销售单号、销售金额、销售日期、收款人;第二类是单据的明细信息(销售明细表),如商品序号、商品名称、商品数量等。在数据库的“销售主表”中通常以“销售单号”作为主键;在“销售明细表”中,为了标识被销售出去的商品隶属于哪张单据,需要对每一条商品销售记录标明“单据编号”。在这种情况下,销售明细表中的“销售单号”就被称为外键,因为“销售单号”是其所在表以外(主体表)的一个主键。
当出现外键时,主键与外键的列名称可以是不同的,但必须要求它们的值集相同,即“销售明细表”中出现的“销售单号”一定要和主体表中的值匹配。
对于上面提到的“二维表格”中存储的数据信息,通常以物理文件的形式存储在磁盘上,这种物理文件称为“数据文件”,用户会使用一种数据库软件实现与磁盘上的数据文件进行交互,这种数据库软件就称为数据库管理系统(DBMS)。DBMS是建立在操作系统基础上的,它可以实现对数据库文件进行统一管理和控制。用户对数据库提出的访问请求都是由DBMS来处理的。另外,DBMS还提供了多种用于管理数据的实用工具。
1.2.2 关系型数据库的E-R模型
在设计关系型数据库时,首先需要为它建立逻辑模型。关系型数据库的逻辑模型可以通过实体和关系组成的图形来表示,这种图形称为E-R图,它实现将现实世界中的实体和实体之间的联系转换为逻辑模型。使用E-R图形表示的逻辑模型称为E-R模型,一个标准的E-R模型主要由实体、属性和联系3部分组成。
1.实体和属性
实体是一个数据对象,是指客观存在并可以相互区分的事物,如一个教师、一个学生、一个雇员等。每个实体由一组属性来表示,如一个具体的学生拥有学号、姓名、性别和班级等属性,其中学号可以唯一标识具体某个学生这个实体。具有相同属性的实体组合在一起就构成实体集——实体的集合,而实体则是实体集中的某一个特例,例如,王同学这个实体就是学生实体集中的一个特例。
在E-R模型中,实体用矩形表示,矩形内注明实体的命名。实体名常用以大写字母开头的有具体意义的英文名词来表示,联系名和属性名也采用这种方式。如图1.2所示为一个图书档案的E-R图。
2.联系
在实际应用中,实体之间是存在联系的,这种联系必须在逻辑模型中表现出来。在E-R模型中,联系用菱形表示,菱形框内写明“联系名”,并用“连接线”将有关实体连接起来,同时在“连接线”的旁边标注上联系的类型,两个实体之间的联系类型可以分为以下3类。
一对一:若对于实体集A中的每一个实体,在实体集合B中最多有一个实体与之相关;反之亦然,则称实体集A与实体B具有一对一的联系,可标记联系为1:1。
一对多:若对于实体集A中的每一个实体,在实体集B中有多个实体与之相关;反之,对于实体集B中的每一个实体,实体集A中最多有一个实体与之相关,则称实体集A与实体集B具有一对多的联系,可标记联系为1:n。
多对多:若对于实体集A中的每一个实体,在实体集B中有多个实体与之相关;反之,对于实体集B中的每一个实体,实体集A中也有多个实体与之相关,则称实体集A与实体集B具有多对多的联系,可标记联系为m:n。
例如,一个读者可以有多个图书借还记录,而一个借还记录只能隶属于一个读者,这样“读者档案实体”与“读者借还实体”之间就存在一对多的联系(即1:n),那么这两个实体之间的联系如图1.3所示。
图1.2 图书档案实体E-R图
图1.3 “读者档案实体”与“读者借还实体”之间的联系
1.2.3 关系型数据库的设计范式
在数据库中,数据之间存在着密切的联系。关系型数据库由相互联系的一组关系所组成,每个关系包括关系模式和关系值两个方面。关系模式是对关系的抽象定义,给出关系的具体结构;关系的值是关系的具体内容,反映关系在某一时刻的状态。一个关系包含许多元组(记录行),每个元组都是符合关系模式结构的一个具体值,并且都分属于相应的属性。在关系数据库中的每个关系都需要进行规范化,使之达到一定的规范化程度,从而提高数据的结构化、共享性、一致性和可操作性。
规范化是把数据库组织成在保持存储数据完整性的同时最小化冗余数据的结构的过程。规范化的数据库必须符合关系模型的范式规则。范式可以防止在使用数据库时出现不一致的数据,并防止数据丢失。关系模型的范式有第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)、第六范式(6NF)和BCNF范式等多种。通常数据库只要满足前3个范式就足够用了,下面举例介绍前3个范式。
1.第一范式(1NF)
第一范式是第二和第三范式的基础,是最基本的范式。第一范式包括下列指导原则:
数据组的每个属性只可以包含一个值。
关系中的每个数组必须包含相同数量的值。
关系中的每个数组一定不能相同。
在任何一个关系数据库中,第一范式是对关系模式的基本要求,不满足第一范式的数据库就不是关系型数据库。
如果数据表中的每一个列都是不可再分割的基本数据项——同一列中不能有多个值,那么就称此数据表符合第一范式,由此可见第一范式具有不可再分解的原子特性。
在第一范式中,数据表的每一行只包含一个实体的信息,并且每一行的每一列只能存放实体的一个属性。例如,对于学生信息,不可以将学生实体的所有属性信息(如学号、姓名、性别、年龄、班级等)都放在一个列中显示,也不能将学生实体的两个或多个属性信息放在一个列中显示,学生实体的每个属性信息都放在一个列中显示。
如果数据表中的列信息都符合第一范式,那么在数据表中的字段都是单一的、不可再分的。如表1.1所示就是不符合第一范式的学生信息表,因为“班级”列中包含了“系别”和“班级”两个属性信息,这样“班级”列中的信息就不是单一的,是可以再分的;而表1.2就是符合第一范式的学生信息表,它将原“班级”列的信息拆分到“系别”列和“班级”列中。
表1.1 不符合第一范式的学生信息表
表1.2 符合第一范式的学生信息表
2.第二范式(2NF)
第二范式是在第一范式的基础上建立起来的,即满足第二范式必先满足第一范式。第二范式要求数据库表中的每个实体(即各个记录行)必须可以被唯一地区分。为实现区分各行记录,通常需要为表设置一个“区分列”,用以存储各个实体的唯一标识。在学生信息表中,设置了“学号”列,由于每个学生的编号都是唯一的,因此每个学生可以被唯一地区分(即使学生存在重名的情况),那么这个唯一属性列被称为主关键字或主键。
第二范式要求实体的属性完全依赖于主关键字,即不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。
例如,这里以“员工工资信息表”为例,若以(员工编码、岗位)为组合关键字(即复合主键),就会存在如下决定关系。
(员工编码,岗位)→(决定)(姓名、年龄、学历、基本工资、绩效工资、奖金)
在上面的决定关系中,还可以进一步拆分为如下两种决定关系。
(员工编码)→(决定)(姓名、年龄、学历) (岗位)→(决定)(基本工资)
其中,员工编码决定了员工的基本信息(包括姓名、年龄、学历);而岗位决定了基本工资,所以这个关系表不满足第二范式。
对于上面的这种关系,可以把上述两个关系表更改为如下3个表。
员工档案表:employee(员工编码、姓名、年龄、学历)。
岗位工资表:quarters(岗位、基本工资)。
员工工资表:pay(员工编码、岗位、绩效工资、奖金)。
3.第三范式(3NF)
第三范式是在第二范式的基础上建立起来的,即满足第三范式必先满足第二范式。第三范式要求关系表不存在非关键字列对任意候选关键字列的传递函数依赖,也就是说,第三范式要求一个关系表中不包含已在其他表中包含的非主关键字信息。
所谓传递函数依赖,就是指如果存在关键字段A决定非关键字段B,而非关键字段B决定非关键字段C,则称非关键字段C传递函数依赖于关键字段A。
例如,这里以员工信息表(employee)为例,该表中包含员工编码、员工姓名、年龄、部门编码、部门经理等信息,该关系表的关键字为“员工编码”,因此存在如下决定关系。
(员工编码)→(决定)(员工姓名、年龄、部门编码、部门经理)
上面的这个关系表是符合第二范式的,但它不符合第三范式,因为该关系表内部隐含着如下决定关系。
(员工编码)→(决定)(部门编码)→(决定)(部门经理)
上面的关系表存在非关键字段“部门经理”对关键字段“员工编码”的传递函数依赖。对于上面的这种关系,可以把这个关系表(employee)更改为如下两个关系表。
员工信息表:employee(员工编码、员工姓名、年龄、部门编码)。
部门信息表:department(部门编码、部门经理)。
对于关系型数据库的设计,理想的设计目标是按照“规范化”原则存储数据,因为这样做能够消除数据冗余、更新异常、插入异常和删除异常。
1.3 Oracle 11g的新功能
Oracle 11g可以帮助企业管理企业信息、更深入地洞察业务状况,并迅速自信地做出调整以适应不断变化的竞争环境。新版数据库增强了Oracle数据库独特的数据库集群、数据中心自动化和工作量管理功能。Oracle客户可以在安全的、高度可用和可扩展的、由低成本服务器和存储设备组成的网格上满足最苛刻的交易处理、数据仓库和内容管理应用,其中主要的新功能列举如下。
1.增强信息生命周期管理和存储管理能力
Oracle 11g具有极新的数据划分和压缩功能,可实现更经济的信息生命周期管理和存储管理。很多原来需要手工完成的数据划分工作在Oracle 11g中都实现了自动化,Oracle 11g还扩展了已有的范围、散列和列表划分功能,增加了间隔、索引和虚拟卷划分功能。
2.全面回忆数据变化
Oracle 11g具有Oracle全面回忆(Oracle Total Recall)组件,可帮助管理员查询在过去某些时刻指定表格中的数据。管理员可以用这种简单实用的方法给数据增加时间维度,以跟踪数据变化、实施审计,并满足法规要求。
3.最大限度提高信息可用性
在保护数据库应用免受计划停机和意外宕机影响方面,Oracle在业界一直处于领先地位。Oracle 11g进一步增强了这种领先地位,数据库管理员现在可以更轻松地达到用户的可用性预期。新的可用性功能包括Oracle闪回交易(Oracle Flashback Transaction),可以轻松撤销错误交易以及任何相关交易;并行备份和恢复功能,可改善非常大数据库的备份和存储性能;“热修补”功能,不必关闭数据库就可以进行数据库修补,提高了系统可用性。
4.Oracle快速文件
Oracle 11g具有在数据库中存储大型对象的下一代功能,这些对象包括图像、大型文本对象或一些先进的数据类型,如XML、医疗成像数据和三维对象。Oracle快速文件(Oracle Fast Files)组件使得数据库应用的性能完全比得上文件系统的性能。
5.更快的XML
在Oracle 11g中,XML DB的性能获得了极大的提高。XML DB是Oracle数据库的一个组件,可帮助客户以本机方式存储和操作XML数据。Oracle 11g增加了对二进制XML数据的支持,现在客户可以选择适合自己特定应用及性能需求的XML存储选项。
6.透明的加密
Oracle 11g进一步增强了Oracle数据库无与伦比的安全性。这个新版数据库增强了Oracle透明数据加密功能,将这种功能扩展到了卷级加密之外。Oracle 11g具有表空间加密功能,可用来加密整个表、索引和所存储的其他数据。
7.嵌入式OLAP行列
Oracle 11g在数据仓库方面也引入了创新。OLAP行列现在可以在数据库中像物化图那样使用,因此开发人员可以用业界标准SQL实现数据查询,同时仍然受益于OLAP行列所具有的高性能。
8.连接汇合和查询结果高速缓存
Oracle 11g进一步增强了Oracle在性能和可扩展性方面的业界领先地位,增加了查询结果高速缓存等新功能。通过高速缓存和重用经常调用的数据库查询以及数据库和应用层的功能,查询结果高速缓存功能改善了应用的性能和可扩展性。
9.增强了应用开发能力
Oracle 11g提供多种开发工具供开发人员选择,它提供的简化应用开发流程可以充分利用Oracle 11g的关键功能,这些关键功能包括客户端高速缓存、提高应用速度的二进制XML、XML处理以及文件存储和检索。
1.4 Oracle 11g的安装与卸载
1.4.1 Oracle 11g的安装
Oracle 11g的安装与升级都是比较复杂的工作,为了便于Oracle 11g数据库管理系统可以安装在多种操作平台(如Windows平台、Linux平台和UNIX平台等)上,Oracle 11g提供了一个通用的安装工具——Oracle Universal Installer,该工具是基于Java语言开发的图形界面安装工具,利用它可以实现在不同操作系统平台上安装Oracle 11g数据库。本节主要介绍Oracle 11g在Windows平台上的安装。
Oracle 11g数据库服务器由Oracle数据库软件和Oracle实例组成。安装数据库服务器就是将管理工具、实用工具、网络服务和基本的客户端等组件从安装盘复制到计算机硬盘的文件夹结构中,并创建数据库实例、配置网络和启动服务等。下面对Oracle 11g的安装过程进行详细的说明,这里以Oracle Database 11g发行版2为例(Oracle 11g其他版本的安装可参考此版本),具体安装过程如下。
(1)在数据库安装资源包或安装文件夹中双击setup.exe文件,将启动Oracle Universal Installer安装工具,并打开如图1.4所示的命令行窗口,然后会在该窗口中出现用于检测计算机软件、硬件安装环境的提示信息,若安装环境不满足系统安装的最小需求,则程序会终止。
图1.4 启动Oracle Universal Installer
(2)在Oracle Universal Installer安装工具检测完当前系统的软件、硬件环境之后,将打开“配置安全更新”界面。该界面主要用来设置系统的在线更新方式,若数据库所安装的机器没有连接Internet,则无须进行系统在线更新配置。这样在该界面上可以取消选中“我希望通过My Oracle Support接收安全更新”复选框,并将“电子邮件”文本框置空,然后单击“下一步”按钮,如图1.5所示。
图1.5 “配置安全更新”界面
(3)单击“下一步”按钮后,系统会弹出“未指定电子邮件地址”的信息提示框,如图1.6所示。这里单击“是”按钮,表示对上一步的设置进行确认就可以了。
图1.6 “未指定电子邮件地址”提示框
(4)单击“是”按钮后,会打开“选择安装选项”界面,该界面用于选择“安装选项”,这里选中“创建和配置数据库”单选按钮,然后单击“下一步”按钮,如图1.7所示。
图1.7 “选择安装选项”界面
(5)单击“下一步”按钮后,会打开“系统类”界面,如图1.8所示。该界面用来选择数据库被安装在哪种操作系统平台(Windows主要有桌面版和服务器版两种)上,这要根据当前机器所安装的操作系统而定,本演示实例使用的是Windows 7操作系统(属于桌面类系统),所以选择“桌面类”选项,然后单击“下一步”按钮。
图1.8 “系统类”界面
(6)单击“下一步”按钮后,会打开“典型安装配置”界面。在该界面中,首先设置文件目录,默认情况下,安装系统会自动搜索出剩余磁盘空间最大的磁盘作为默认安装盘,当然也可以自定义安装磁盘;然后选择数据库版本,安装系统提供的数据库版本包括“企业版”“标准版”“个人版”“定制版”4种,通常选择“企业版”就可以;接着输入“全局数据库名”和登录密码(需要记住,该密码是system、sys、sysman、dbsnmp这4个管理账户共同使用的初始密码。另外,用户scott的初始密码为tiger),其中“全局数据库名”也就是数据库实例名称,它具有唯一性,不允许出现两个重复的“全局数据库名”;最后单击“下一步”按钮,如图1.9所示。
图1.9 “典型安装配置”界面
在“管理口令”和“确认口令”后输入1qaz2wsx,即为system账户的密码。此为本书中设置的密码,读者可自行设置此密码。
(7)单击“下一步”按钮后,会打开“执行先决条件检查”界面,该界面用来检查安装本产品所需要的最低配置,检查结果会在下一个界面中显示出来,如图1.10所示。
图1.10 “执行先决条件检查”界面
(8)检查完毕后,弹出如图1.11所示的“概要”界面,在该界面中会显示出安装产品的概要信息,若在上一步中检查出某些系统配置不符合Oracle安装的最低要求,则会在该界面的列表中显示出来,以供用户参考,然后单击“完成”按钮即可。
图1.11 “概要”界面
(9)单击“完成”按钮后,会打开“安装产品”界面,该界面会显示产品的安装进度,如图1.12所示。
图1.12 “安装产品”界面
(10)当“安装产品”界面中的进度条到达100%后,会打开Database Configuration Assistant(数据库配置助手)界面,进行数据库文件的复制,如图1.13所示。在该界面中,单击“停止”按钮,可以随时停止文件复制。
图1.13 Database Configuration Assistant界面
(11)当Database Configuration Assistant界面中的进度条到达100%后,表示Oracle 11g数据库安装所需的文件已经复制完毕,这时会弹出一个包含安装信息的对话框,如图1.14所示。
图1.14 包含安装信息的对话框
(12)在如图1.14所示的对话框中单击“口令管理”按钮,会打开如图1.15所示的“口令管理”对话框,在该对话框中可以为某些用户重新设置口令或者解除某些用户的锁定状态(例如,scott用户默认处于锁定状态)。
图1.15 “口令管理”对话框
注意:需要将scott用户后单元格的对号去掉,解除锁定,否则将不能操作scott用户中的表(scott用户中存在4张默认创建的表,分别为emp、dept、bonus和salgrade,其中emp和dept表最常用)。
(13)在“口令管理”对话框中单击“确定”或“取消”按钮就可以返回到如图1.14所示的包含安装信息的对话框,在该对话框中单击“确定”按钮将打开“完成”界面,如图1.16所示。另外,需要用户在这个界面记住Oracle企业管理器(Oracle Enterprise Manager,OEM)的链接地址,这是一个Web形式的企业管理器,它的地址通常默认为https://localhost:1518/em。至此,Oracle 11g数据库安装完毕,单击“关闭”按钮完成Oracle 11g数据库的安装。
图1.16 “完成”界面
1.4.2 Oracle 11g的卸载
Oracle 11g的卸载主要有两种方式,一种是使用Oracle Universal Installer管理工具,该工具以向导的模式卸载数据库;另一种是运行deinstall.bat批处理文件来卸载数据库。由于第一种卸载方式以向导模式进行,比较简单,这里不做过多介绍。这里主要讲解第二种卸载数据库的方法——使用deinstall.bat批处理文件卸载数据库,具体步骤如下。
(1)首先打开Windows 7的“组件服务”窗口,然后停止所有的Oracle后台服务程序,如图1.17所示。
图1.17 停止Oracle所有的后台服务
(2)运行E:\app\Administrator\product\11.2.0\dbhome_1\deinstall\deinstall.bat这个批处理文件(这个目录要根据自己实际安装的位置来确定),会打开如图1.18所示的命令行窗口,然后等待程序提取“卸载”信息。
图1.18 第一个命令行界面
(3)“卸载”信息提取完毕后,会显示如图1.19所示的第二个命令行界面,用以取消配置LISTENER单实例监听程序。
图1.19 第二个命令行界面
(4)接着显示如图1.20所示的第三个命令行界面,在该界面的提示符位置输入全局数据库名称,若存在多个数据库,则数据库名称之间使用逗号分隔(这里输入orcl),然后按Enter键(或者什么也不输,直接按Enter键即可)。
图1.20 第三个命令行界面
(5)这时会显示第四个命令行界面,如图1.21所示。在该界面提示符的位置输入y字符,然后按Enter键。
图1.21 第四个命令行界面
(6)这时会显示第五个命令行界面,如图1.22所示,等待卸载Oracle 11g数据库,卸载操作可能要持续几分钟,需耐心等待。
图1.22 第五个命令行界面
(7)卸载完成,命令行界面会自动退出,由于这种自动卸载功能并不完全彻底,需要手动清除安装目录中的剩余文件。
1.5 Oracle 11g的管理工具
Oracle 11g提供了多种数据库管理工具,这里主要介绍常用的SQL*Plus、Oracle企业管理器(Oracle Enterprise Manager,OEM)和数据库配置助手(Database Configuration Assistant)。
1.5.1 SQL*Plus工具
在Oracle 11g数据库系统中,用户对数据库的操作主要是通过SQL*Plus来完成的。SQL*Plus作为Oracle的客户端工具,既可以建立位于数据库服务器上的数据连接,也可以建立位于网络中的数据连接,下面将介绍如何启动SQL*Plus和如何使用SQL*Plus连接到数据库。
(1)选择“开始”/“所有程序”/Oracle-OraDb11g_home1/“应用程序开发”/SQL*Plus命令,打开如图1.23所示的SQL*Plus启动界面。
图1.23 SQL*Plus启动界面
(2)在命令提示符的位置输入登录用户(如system或sys等系统管理账户)和登录密码(密码是在安装或创建数据库时指定的),若输入的用户名和密码正确,则SQL*Plus将连接到数据库,如图1.24所示。
图1.24 使用SQL*Plus连接数据库
另外,还可以通过在“运行”中输入cmd命令来启动命令行窗口,然后在该窗口中输入SQL*Plus命令来连接数据库,如图1.25所示。使用SQL*Plus命令连接数据库实例的语法格式如下。
SQLPLUS username[/password][@connect_identifier] [AS SYSOPER|SYSDBA]
username:表示登录用户名。
password:表示登录密码。
@connect_identifier:表示连接的全局数据库名,若连接本机上的默认数据库,则可以省略。
图1.25 使用SQL*Plus命令连接数据库实例
说明
在输入Oracle数据库命令时,其关键字不区分大小写(例如,输入sqlplus或SQLPLUS都可以),但参数区分大小写。
1.5.2 Oracle企业管理器
Oracle企业管理器(Oracle Enterprise Manager,OEM)是基于Web界面的Oracle数据库管理工具。启动Oracle 11g的OEM只需要在浏览器中输入其URL地址——通常为https://localhost:1518/em,然后连接主页即可;也可以在“开始”菜单的“Oracle程序组”中选择Database Control-orcl命令来启动Oracle 11g的OEM工具。
如果是第一次使用OEM,启动Oracle 11g的OEM后,需要安装“信任证书”或者直接选择“继续浏览此网站”即可。然后就会出现OEM的登录页面,用户需要输入登录用户名(如system、sys、scott等)和登录口令,如图1.26所示。
图1.26 登录OEM
在输入用户名和口令后,单击“登录”按钮,若用户名和口令都正确,就会出现“数据库实例”的“主目录”属性页,如图1.27所示。
图1.27 “主目录”属性页
OEM以图形的方式提供用户对数据库的操作,虽然操作起来比较方便简单,不需要使用大量的命令,但这对于初学者来说减少了学习操作Oracle数据库命令的机会,而且不利于读者深刻地理解Oracle数据库。因此,建议读者强制自己使用SQL*Plus工具。另外,本书实例的讲解也主要在SQL*Plus中完成,以帮助读者更好地学习SQL*Plus命令。
1.5.3 数据库配置助手
在安装Oracle 11g数据库管理系统的过程中,若选中“仅安装数据库软件”单选按钮,则系统安装完毕后,需要手动创建数据库才能够实现对Oracle数据库的各种操作。在Oracle 11g中,可以通过数据库配置助手(Database Configuration Assistant,DBCA)来实现创建和配置数据库。
选择“开始”/“所有程序”/Oracle-OraDb11g_home1/“配置和移植工具”/Database Configuration Assistant命令,会打开如图1.28所示的界面。
图1.28 启动数据库配置助手
然后,用户只需要按照数据库配置助手向导的提示逐步进行设置,就可以实现创建和配置数据库。
互动练习:在scott模式下,使用SELECT语句查询dept表中的所有记录。
1.6 启动与关闭数据库实例
1.6.1 启动数据库实例
Oracle数据库实例的启动过程分为3个步骤,分别是启动实例、加载数据库、打开数据库。用户可以根据实际情况的需要,以不同的模式启动数据库,启动数据库所使用的命令格式如下。
STARTUP [NOMOUNT | MOUNT | OPEN | FORCE] [RESTRICT] [PFILE=filename]
NOMOUNT:表示启动实例不加载数据库。
MOUNT:表示启动实例、加载数据库并保持数据库的关闭状态。
OPEN:表示启动实例、加载并打开数据库,这个是默认选项。
FORCE:表示终止实例并重新启动数据库。
RESTRICT:用于指定以受限制的会话方式启动数据库。
PFILE:用于指定启动实例时所使用的文本参数文件,filename就是文件名。
Oracle数据库实例在启动时必须读取一个初始化参数文件,以便从中获得有关实例启动的参数配置信息。若在STARTUP语句中没有指定PFILE参数,则Oracle首先读取默认位置的服务器初始化参数文件spfile,若没有找到默认的服务器初始化参数文件,则将读取默认位置的文本初始化参数文件。下面将分别讲解STARTUP语法中列举出的几种启动模式。
1.NOMOUNT模式
这种启动模式只会创建实例(即创建Oracle实例的各种内存结构和服务进程),并不加载数据库,也不会打开任何数据文件。下面的示例代码显示了如何使用NOMOUNT模式启动数据库实例。
【例1.1】 启动数据库实例到NOMOUNT模式下,代码及运行结果如下。(实例位置:资源包\TM\sl\1\1)
在上面的示例代码中,首先用户要以sysdba的身份登录,才具有关闭和启动数据实例的权限。在使用SHUTDOWN命令关闭数据库实例之后,然后使用STARTUP NOMOUNT命令启动数据库实例。
说明
通常在创建新数据库或重建控制文件时,使用NOMOUNT模式启动数据库实例。
2.MOUNT模式
这种模式将启动实例、加载数据库并保持数据库的关闭状态,下面的示例代码显示了如何使用MOUNT模式启动数据库实例。
【例1.2】 启动数据库实例到MOUNT模式下,代码及运行结果如下。(实例位置:资源包\TM\sl\1\2)
上面的代码中,首先使用SHUTDOWN命令关闭数据库实例,然后再使用STARTUP MOUNT命令启动数据库实例。
说明
MOUNT模式通常在进行数据库维护时使用,例如,执行数据库完全恢复操作、更改数据库的归档模式等。
3.OPEN模式
这种模式将启动实例、加载并打开数据库,这就是常规的启动模式,用户想要对数据库进行多种操作,就必须使用OPEN模式启动数据库实例。下面的示例代码显示了如何使用OPEN模式启动数据库实例。
【例1.3】 启动数据库实例到OPEN模式下,代码及运行结果如下。
在上面的代码中,startup命令的后面不带有任何参数,就表示以OPEN模式启动数据库实例。
4.FORCE模式
这种模式将终止实例并重新启动数据库,这种启动模式具有一定的强制性。例如,在其他启动模式失效时,可以尝试使用这种启动模式。下面的示例代码显示了如何使用FORCE模式启动数据库实例。
【例1.4】 启动数据库实例到FORCE模式下,代码及运行结果如下。
1.6.2 关闭数据库实例
与启动数据库实例相同,关闭数据库实例也分为3个步骤,分别是关闭数据库、卸载数据库、关闭Oracle实例。在SQL*Plus中,可以使用SHUTDOWN语句关闭数据库,其具体语法格式如下。
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT]
NORMAL:表示以正常方式关闭数据库。
TRANSACTIONAL:表示在当前所有的活动事务被提交完毕之后,关闭数据库。
IMMEDIATE:表示在尽可能短的时间内立即关闭数据库。
ABORT:表示以终止方式来关闭数据库。
下面将分别讲解在SHUTDOWN语法中列举出的4种关闭数据库实例的方式。
1.NORMAL方式
这种方式称作正常关闭方式,如果对关闭数据库的时间没有限制,通常会使用这种方式来关闭数据库。下面的代码显示了如何使用NORMAL方式关闭数据库。
【例1.5】 使用NORMAL方式关闭数据库,代码及运行结果如下。
SQL> shutdown normal 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。
从上面的代码可以看出,Oracle在执行SHUTDOWN命令后,所返回的响应信息就是关闭数据库实例的过程。当以正常方式关闭数据库时,Oracle将执行如下操作。
阻止任何用户建立新的连接。
等待当前所有正在连接的用户主动断开连接。
当所有的用户都断开连接后,将立即关闭数据库。
2.TRANSACTIONAL方式
这种方式称作事务关闭方式,它的首要任务是能够保证当前所有的活动事务都可以被提交,并在尽可能短的时间内关闭数据库。下面的代码显示了如何使用TRANSACTIONAL方式关闭数据库。
【例1.6】 使用TRANSACTIONAL方式关闭数据库,代码及运行结果如下。
SQL> shutdown transactional 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。
以事务方式关闭数据库时,Oracle将执行如下操作。
阻止用户建立新连接和开始新事务。
等待所有活动事务提交后,再断开用户连接。
当所有的活动事务提交完毕、所有的用户都断开连接后,将关闭数据库。
3.IMMEDIATE方式
就跟IMMEDIATE单词的含义一样,这种方式称作立即关闭方式,这种方式能够在尽可能短的时间内关闭数据库。下面的代码显示了如何使用IMMEDIATE方式关闭数据库。
【例1.7】 使用IMMEDIATE方式关闭数据库,代码及运行结果如下。
SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。
在这种关闭方式下,Oracle不但会立即中断当前用户的连接,而且会强行终止用户的当前活动事务,将未完成的事务回退。以立即关闭方式关闭数据库时,Oracle将执行如下操作。
阻止用户建立新连接和开始新事务。
将未提交的活动事务回退。
关闭数据库。
4.ABORT方式
这种方式称作终止关闭方式,终止关闭方式具有一定的强制性和破坏性。使用这种方式会强制中断任何数据库操作,这样可能会丢失一部分数据信息,影响数据库的完整性。除了由于使用其他3种方式无法关闭数据库而使用它之外,应该尽量避免使用这种方式。下面的代码显示了如何使用ABORT方式关闭数据库。
【例1.8】 使用ABORT方式关闭数据库,代码及运行结果如下。
SQL> shutdown abort ORACLE 例程已经关闭。
以立即关闭方式关闭数据库时,Oracle将执行如下操作。
阻止用户建立新连接和开始新事务。
取消未提交的活动事务,而不是回退。
立即终止正在执行的任何SQL语句。
立即关闭数据库。
互动练习:在scott模式下,使用DISTINCT关键字显示emp表中不重复记录。
1.7 小结
本章首先对Oracle关系型数据库的基本理论进行了概要的介绍,同时对数据库的安装、卸载进行了详细讲解。另外,在本章后面还讲解了如何使用3种常用的数据库管理工具和如何启动与关闭数据库实例。在这里,读者要重点掌握SQL*Plus这个数据库操作工具,在以后的学习中我们会经常用到。
1.8 实践与练习
1.尝试通过数据库配置助手(Database Configuration Assistant)创建一个名称为mr的数据库。
2.尝试启动数据库到OPEN模式,然后使用TRANSACTIONAL方式关闭数据库。