Oracle实用教程(第4版)(Oracle 11g版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-11-19 05:49:24

点击下载

作者:郑阿奇

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Oracle实用教程(第4版)(Oracle 11g版)

Oracle实用教程(第4版)(Oracle 11g版)试读:

前言

Oracle是目前最流行的关系型数据库管理系统之一,广泛应用于信息系统管理、企业数据处理、Internet、电子商务网站等领域。

本书以Oracle 11g(中文版)为平台,分别介绍Oracle基础和在流行平台上开发Oracle数据库应用系统。Oracle基础部分比较系统地介绍了Oracle 11g的主要功能。首先介绍数据库基础、Oracle 11g数据库;然后介绍数据库的创建和操作,数据库的查询和视图,索引与数据完整性,PL/SQL语言,存储过程和触发器,系统安全管理,表空间、备份和恢复,事务、锁、闪回和Undo表空间,其他概念。流行平台分为3种,开发的Oracle数据库应用系统均为学生成绩管理系统。

本书主要特点如下。(1)介绍数据库最基本的原理、驱动、接口,从总体上理清思路,便于学生理解。(2)Oracle基础部分采用中文命令格式,从而使语法描述变得简洁,更容易掌握。实例数据库表字段名为汉字,方便教学。(3)运行结果屏幕化,一般不会出现命令错误。书中的内容层次更加清楚,由浅及深,易于掌握。(4)包含目前最流行的PHP 5、JavaEE 7和ASP.NET 4等平台操作Oracle 11g数据库。每个平台都介绍了连接数据库的基本知识、操作Oracle数据库的主要方法,并且构成了一个小的应用系统,网上提供源代码和数据库免费下载,很容易让读者模仿和掌握开发Oracle数据库应用系统。

本教程不仅适合教学,也适合Oracle的各类培训和用Oracle编程开发应用程序的用户学习和参考。

本书由南京师范大学郑阿奇主编,周敏、张洁编著。参加本书编写的还有梁敬东、丁有和、曹弋、陈瀚、徐文胜、殷红先、张为民、姜乃松、钱晓军、彭作民、高茜、陈冬霞、徐斌、王志瑞、孙德荣、周怡明、刘博宇、郑进、周何骏、陶卫冬、严大牛、邓拼搏、俞琰、吴明祥、于金彬、马骏等。此外,还有许多同志对本书提供了很多帮助,在此一并表示感谢!

由于作者水平有限,不当之处在所难免,恳请读者批评指正。

意见建议邮箱:easybooks@163.com作者2015年9月

第1部分 实用教程

第1章 数据库基础

Oracle是甲骨文公司开发的数据库管理系统,Oracle 11g仍然是目前最流行的Oracle数据库管理系统版本。在介绍Oracle数据库之前,首先介绍数据库的基本概念。

1.1 数据库基本概念

1.1.1 数据库系统

1.数据库

数据库(DB)是存放数据的仓库,而且这些数据存在一定的关联,并按一定的格式存放在计算机内。例如,把一个学校的学生、课程、成绩等数据有序地组织并存放在计算机内,就可以构成一个数据库。

2.数据库管理系统

数据库管理系统(DBMS)按一定的数据模型组织数据形成数据库,并对数据库进行管理。简单地说,DBMS 就是管理数据库的系统(软件)。数据库系统管理员(DataBase Administrator,DBA)通过DBMS对数据库进行管理。

目前,比较流行的DBMS有:Oracle、SQL Server、MySQL、Sybase、DB2、Access、Visual FoxPro等。其中,Oracle是目前最流行的大型关系数据库管理系统。本书介绍的是最新的Oracle 11g版。

3.数据库系统

数据、数据库、数据库管理系统与操作数据库的应用程序,加上支撑它们的硬件平台、软件平台和与数据库有关的人员一起构成了一个完整的数据库系统。如图1.1所示描述了数据库系统的构成。图1.1 数据库系统的构成1.1.2 数据模型

数据库管理系统根据数据模型对数据进行存储和管理,数据库管理系统采用的数据模型主要有层次模型、网状模型和关系模型。

1.层次模型

层次模型将数据组织成一对多关系的结构,采用关键字来访问其中每一层次的每一部分。它存取方便且速度快;结构清晰,容易理解;数据修改和数据库扩展容易实现;检索关键属性十分方便。但结构不够灵活;同一属性数据要存储多次,数据冗余大;不适合于拓扑空间数据的组织。

如图1.2所示为按层次模型组织的数据示例。图1.2 按层次模型组织的数据示例

2.网状模型

网状模型具有多对多类型的数据组织方式。它能明确而方便地表示数据间的复杂关系;数据冗余小。但网状结构的复杂增加了用户查询和定位的困难;需要存储数据间联系的指针,使得数据量增大;数据的修改不方便。

如图1.3所示为按网状模型组织的数据示例。图1.3 按网状模型组织的数据示例

3.关系模型

关系模型以记录组或二维数据表的形式组织数据,以便于利用各种实体与属性之间的关系进行存储和变换,不分层也无指针,是建立空间数据和属性数据之间关系的一种非常有效的数据组织方法。它的结构特别灵活,概念单一,满足所有布尔逻辑运算和数学运算规则形成的查询要求;能搜索、组合和比较不同类型的数据;增加和删除数据非常方便;具有更高的数据独立性、更好的安全保密性。但数据库大时,查找满足特定关系的数据费时;而且无法表达空间关系。

例如,在学生成绩管理系统所涉及的“学生”、“课程”和“成绩”三个表中,“学生”表涉及的主要信息有学号、姓名、性别、出生时间、专业、总学分、备注;“课程”表涉及的主要信息有课程号、课程名、开课学期、学时和学分;“成绩”表涉及的主要信息有学号、课程号和成绩。如表1.1、表1.2和表1.3所示分别描述了学生成绩管理系统中“学生”、“课程”和“成绩”三个表的部分数据。表1.1“学生”表表1.2“课程”表表1.3“成绩”表

表格中的一行称为一个记录,一列称为一个字段,每列的标题称为字段名。如果给每个关系表取一个名字,则有n个字段的关系表的结构可表示为:关系表名(字段名1,…,字段名n),通常把关系表的结构称为关系模式。

在关系表中,如果一个字段或几个字段组合的值可唯一标识其对应记录,则称该字段或字段组合为码。

例如,表1.1中的“学号”可唯一标识每一个学生,表1.2中的“课程号”可唯一标识每一门课。表1.3中的“学号”和“课程号”可唯一标识每一个学生一门课程的成绩。

有时,一个表可能有多个码,比如表1.1中,姓名不允许重名,则“学号”、“姓名”均是学生信息表码。对于每一个关系表,通常可指定一个码为“主码”,在关系模式中,一般用下画线标出主码。

设表1.1的名字为xsb,关系模式可分别表示为:xsb(学号,姓名,性别,出生时间,专业,总学分,备注)。

设表1.2的名字为kcb,关系模式可分别表示为:kcb(课程号,课程名,开课学期,学时,学分)。

设表1.3的名字为cjb,关系模式可分别表示为:cjb(学号,课程号,成绩,学分)。

通过上面分析可以看出,关系模型更适合组织数据,所以使用最广泛。Oracle是目前最流行的大型关系数据库管理系统。1.1.3 关系型数据库语言

SQL(Structured Query Language,结构化查询语言)是用于关系数据库查询的结构化语言。SQL的功能包括数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)和数据查询语言(DQL)。(1)数据定义语言(DDL)。DDL用于执行数据库的任务,对数据库以及数据库中的各种对象进行创建、删除、修改等操作。如前所述,数据库对象主要包括表、默认约束、规则、视图、触发器、存储过程。DDL包括的主要语句及功能如表1.4所示。表1.4 DDL包括的主要语句及功能(2)数据操纵语言(DML)。DML用于操纵数据库中的各种对象,检索和修改数据。DML包括的主要语句及功能如表1.5所示。表1.5 DML包括的主要语句及功能(3)数据控制语言(DCL)。DCL用于安全管理,确定哪些用户可以查看或修改数据库中的数据。DCL包括的主要语句及功能如表1.6所示。表1.6 DCL包括的主要语句及功能(4)数据查询语言(DQL)。主要通过SELECT语言实现各种查询功能。

目前,许多关系型数据库管理系统均支持SQL语言,如Oracle、SQL Server、MySQL等。但不同数据库管理系统之间的SQL语言不能完全通用。例如,甲骨文公司的Oracle 数据库所使用的SQL语言是 Procedural Language/SQL(简称 PL/SQL),而微软公司的 SQL Server 数据库系统支持的则是Transact-SQL(简称T-SQL)。PL/SQL是ANSI SQL的扩展加强版SQL语言,除了提供标准的SQL命令之外,还对SQL做了许多补充。

1.2 数据库设计

数据模型按不同的应用层次分成三种类型:概念数据模型、逻辑数据模型、物理数据模型。1.2.1 概念数据模型

概念数据模型(Conceptual Data Model)是面向数据库用户的实现世界的模型,主要用来描述世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及DBMS的具体技术问题,集中精力分析数据以及数据之间的联系等,与具体的数据管理系统无关。概念数据模型必须换成逻辑数据模型,才能在DBMS中实现。

概念数据模型用于信息世界的建模:一方面,应该具有较强的语义表达能力,能够方便直接表达应用中的各种语义知识;另一方面,它还应该简单、清晰、易于用户理解。在概念数据模型中最常用的是E-R模型、扩充的E-R模型、面向对象模型及谓词模型。

通常,E-R模型把每一类数据对象的个体称为“实体”,而每一类对象个体的集合称为“实体集”,例如,在学生成绩管理系统中主要涉及“学生”和“课程”两个实体集。其他非主要的实体可以很多,如班级、班长、任课教师、辅导员等实体。

把每个实体集涉及的信息项称为属性。就“学生”实体集而言,它的属性有:学号、姓名、性别、出生时间、专业、总学分和备注。“课程”实体集属性有:课程号、课程名、开课学期、学时和学分。

实体集中的实体彼此是可区别的。如果实体集中的属性或最小属性组合的值能唯一标识其对应实体,则将该属性或属性组合称为码。码可能有多个,对于每一个实体集,可指定一个码为主码。

如果用矩形框表示实体集,用带半圆的矩形框表示属性,用线段连接实体集与属性,当一个属性或属性组合指定为主码时,在实体集与属性的连接线上标记一斜线,则可以用如图 1.4 所示的形式描述学生成绩管理系统中的实体集及每个实体集涉及的属性。

实体集A和实体集B之间存在各种关系,通常把这些关系称为“联系”。通常,将实体集及实体集联系的图表示称为实体(Entity)-联系(Relationship)模型。

E-R图就是E-R模型的描述方法,即实体-联系图。通常,关系数据库的设计者使用E-R图来对信息世界建模。在E-R图中,使用矩形表示实体型,使用椭圆表示属性,使用菱形表示联系。从分析用户项目涉及的数据对象及数据对象之间的联系出发,到获取E-R图的这一过程称为概念结构设计。

两个实体集A和B之间的联系可能是以下三种情况之一。

1.一对一的联系(1∶1)

A中的一个实体至多与B中的一个实体相联系,B中的一个实体也至多与A中的一个实体相联系。例如,“班级”与“班长”这两个实体集之间的联系是一对一的联系,因为一个班级只有一个班长,反过来,一个班长只属于一个班级。“班级”与“班长”两个实体集的E-R模型如图1.5所示。

2.一对多的联系(1∶n)

A中的一个实体可以与B中的多个实体相联系,而B中的一个实体至多与A中的一个实体相联系。例如,“班级”与“学生”这两个实体集之间的联系是一对多的联系,因为一个班级可有若干学生,反过来,一个学生只能属于一个班级。“班级”与“学生”两个实体集的E-R模型如图1.6所示。

3.多对多的联系(m∶n)

A中的一个实体可以与B中的多个实体相联系,而B中的一个实体也可与A中的多个实体相联系。例如,“学生”与“课程”这两个实体集之间的联系是多对多的联系,因为一个学生可选多门课程,反过来,一门课程可被多个学生选修。“学生”与“课程”两个实体集的E-R模型如图1.7所示。图1.4 学生和课程实体集属性的描述图1.5“班级”与“班长”两个实体集的E-R模型图1.6“班级”与“学生”两个实体集的E-R模型图1.7“学生”与“课程”两个实体集的E-R模型1.2.2 逻辑数据模型

逻辑数据模型(Logical Data Model)是用户从数据库所看到的模型,是具体的DBMS所支持的数据模型。此模型既要面向用户,又要面向系统,主要用于数据库管理系统(DBMS)的实现。

前面用E-R图描述学生成绩管理系统中实体集与实体集之间的联系,为了设计关系型的学生成绩管理数据库,需要确定包含哪些表?每个表的结构是怎样的?

前面已介绍了实体集之间的联系,下面将根据三种联系从E-R图获得关系模式的方法。

1.(1∶1)联系的E-R图到关系模式的转换

对于(1∶1)的联系,既可单独对应一个关系模式,也可以不单独对应一个关系模式。(1)联系单独对应一个关系模式,则由联系属性、参与联系的各实体集的主码属性构成关系模式,其主码可选参与联系的实体集的任一方的主码。

例如,考虑图1.5描述的“班级(bjb)”与“班长(bzb)”实体集通过属于(syb)联系E-R模型,可设计如下关系模式(下画线表示该字段为主码):

bjb(班级编号,院系,专业,人数)

bzb(学号,姓名)

syb(学号,班级编号)(2)联系不单独对应一个关系模式,联系的属性及一方的主码加入另一方实体集对应的关系模式中。

例如,考虑图1.5描述的“班级(bjb)”与“班长(bzb)”实体集通过属于(syb)联系E-R模型,可设计如下关系模式:

bjb(班级编号,院系,专业,人数)

bzb(学号,姓名,班级编号)

或者:

bjb(班级编号,院系,专业,人数,学号)

bzb(学号,姓名)

2.(1∶n)联系的E-R图到关系模式的转换

对于(1∶n)的联系,既可单独对应一个关系模式,也可以不单独对应一个关系模式。(1)联系单独对应一个关系模式,则由联系的属性、参与联系的各实体集的主码属性构成关系模式,n端的主码作为该关系模式的主码。

例如,考虑图1.6描述的“班级(bjb)”与“学生(xsb)”实体集E-R模型,可设计如下关系模式:

bjb(班级编号,院系,专业,人数)

xsb(学号,姓名,性别,出生时间,专业,总学分,备注)

syb(学号,班级编号)(2)联系不单独对应一个关系模式,则将联系的属性及1端的主码加入n端实体集对应的关系模式中,主码仍为n端的主码。

例如,图1.6描述的“班级(bjb)”与“学生(xsb)”实体集E-R模型可设计如下关系模式:

bjb(班级编号,院系,专业,人数)

xsb(学号,姓名,性别,出生时间,专业,总学分,备注,班级编号)

3.(m∶n)联系的E-R图到关系模式的转换

对于(m∶n)的联系,单独对应一个关系模式,该关系模式包括联系的属性、参与联系的各实体集的主码属性,该关系模式的主码由各实体集的主码属性共同组成。

例如,图1.7描述的“学生(xsb)”与“课程(kcb)”实体集之间的联系可设计如下关系模式:

xsb(学号,姓名,性别,出生时间,专业,总学分,备注)

kcb(课程号,课程名称,开课学期,学时,学分)

cjb(学号,课程号,成绩)

关系模式cjb 的主码是由“学号”和“课程号”两个属性组合起来构成的一个主码,一个关系模式只能有一个主码。

至此,已介绍了根据E-R图设计关系模式的方法。通常,这一设计过程称为逻辑结构设计。

在设计好一个项目的关系模式后,就可以在数据库管理系统环境下,创建数据库、关系表及其他数据库对象,输入相应数据,并根据需要对数据库中的数据进行各种操作。1.2.3 物理数据模型

物理数据模型(Physical Data Model)是面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS有关,而且还与操作系统和硬件有关。每一种逻辑数据模型在实现时都有其对应的物理数据模型。DBMS为了保证其独立性与可移植性,大部分物理数据模型的实现工作由系统自动完成,而设计者只设计索引、聚集等特殊结构。

1.3 数据库应用系统

1.3.1 应用系统的数据接口

客户端应用程序或应用服务器向数据库服务器请求服务时,首先必须和数据库建立连接。虽然现有DBMS几乎都遵循SQL标准,但不同厂家开发的DBMS有差异,存在适应性和可移植性等方面的问题,为此,人们研究和开发了连接不同DBMS的通用方法、技术和软件接口。

需要注意的是,同一DBMS,不同平台开发操作DBMS需要对应的驱动程序。例如,在用PHP、JavaEE、ASP.NET开发操作Oracle数据库时,需要分别安装对应版本的驱动程序。驱动程序可以通过DBMS对应的官方网站进行下载。另外,有些ASP.NET开发平台已经包含了该平台操作有关DBMS版本的驱动程序,这时,针对该平台的DBMS版本的驱动程序可以不需要另外安装。本书实习部分将详细介绍在PHP、JavaEE、ASP.NET平台操作Oracle 11g的驱动程序的安装和使用。1.3.2 C/S架构的应用系统

DBMS通过命令和适合专业人员的界面操作数据库。对于一般的数据库应用系统,除了DBMS外,还需要设计适合普通人员操作数据库的界面。目前,开发数据库界面的工具有Visual Basic、Visual C、Visual C#、QT、PowerBuilder、Deiphi等。应用程序与数据库、数据库管理系统之间的关系如图1.8所示。图1.8 三个关系

从图1.8中可看出,当应用程序需要处理数据库中的数据时,首先向数据库管理系统发送一个数据请求,数据库管理系统接收到这一请求后,对其进行分析;然后执行数据库操作,并把处理结果返回给应用程序。由于应用程序直接与用户交互,而数据库管理系统不直接与用户打交道,所以应用程序被称为“前台”,而数据库管理系统被称为“后台”。由于应用程序是向数据库管理系统提出服务请求的,通常称为客户程序(Client);而数据库管理系统是为应用程序提供服务的,通常称为服务器程序(Server),所以又将这一操作数据库的模式称为C/S(客户/服务器)架构。

应用程序和数据库管理系统可以运行在同一台计算机上(单机方式),也可以运行在网络环境下。在网络环境下,数据库管理系统在网络中的一台主机(一般是服务器)上运行,应用程序可以在网络上的多台主机上运行,即一对多的方式。

例如,用Visual C#2013开发的客户-服务器(C/S)模式的学生成绩管理系统界面如图1.9所示。图1.9 C/S模式的学生成绩管理系统界面1.3.3 B/S架构的应用系统

基于Web的数据库应用采用三层(浏览器/Web服务器/数据库服务器)模式,也称B/S架构,如图1.10所示。其中,浏览器(Browser)是用户输入数据和显示结果的交互界面,用户在浏览器表单中输入数据,然后将表单中的数据提交并发送到Web服务器,Web服务器接收并处理用户的数据,通过数据库服务器,从数据库中查询需要的数据(或把数据录入数据库)后将这些数据回送到Web服务器,Web服务器把返回的结果插入HTML页面,传送给客户端,在浏览器中显示出来。图1.10 三层B/S架构

目前,流行的开发数据库Web界面的工具主要有ASP.NET(C#)、PHP、JavaEE等。例如,用JavaEE开发的B/S架构的学生成绩管理系统,其学生信息录入界面如图1.11所示。图1.11 B/S架构的学生成绩管理系统界面

第2章 Oracle 11g数据库介绍

Oracle是目前世界上使用最为广泛的关系型数据库管理系统,在数据库领域一直处于领先地位,多被用在信息系统管理、企业数据处理、Internet 和电子商务网站等领域作为应用数据的后台处理系统,当前最主流的版本为Oracle 11g。

2.1 Oracle 11g简介与安装

2.1.1 Oracle 11g数据库简介

1979年,甲骨文公司推出当时世界上第一个基于SQL标准的关系数据库产品Oracle 1,之后不断完善,2001年发布Oracle 9i,Oracle数据库已经被广泛移植到各类大、中、小、微机环境和平台上。接着推出的Oracle 10g,在数据库性能、可用性和管理能力上都有了极大的增强。随着互联网普及,甲骨文公司的产品发展战略也转而针对网络和云,进行了全面的升级。2007年7月,甲骨文发布了Oracle 11g,它是数据库领域最优秀的产品之一,经过1500万个小时的测试,开发工作量达到了3.6万人/月。Oracle 11g能更方便地在由低成本服务器和存储设备组成的网格上运行,它在继承了前版Oracle 10g的基础上又增加了400多项新特性,如改进本地Java和PL/SQL编译器、数据库修复向导等。目前最新的Oracle版本是于2013年6月发布的Oracle 12c,但它是面向云平台的产品,实际工作中用得最多的仍然是Oracle 11g,它是当前的主流。2.1.2 Oracle 11g的安装

1.安装前的准备

登录(需要先注册)甲骨文官方网站:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html,免费下载Oracle 11g的安装包(共两个文件,大小约合2.1GB),如图2.1所示。下载得到的两个压缩包文件名为:win32_11gR2_database_1of2.zip 和 win32_11gR2_database_2of2.zip,将它们解压到同一个目录(database)下,然后双击解压目录中的setup.exe,软件会加载并初步校验系统是否达到Oracle 11g安装的最低要求,只有达到要求,才会继续加载程序并开始安装。安装时,计算机要始终保持连接互联网。图2.1 下载Oracle 11g的安装包

2.安装过程(1)开始安装后,首先出现如图2.2所示的“配置安全更新”窗口,取消勾选“我希望通过My Oracle Support接收安全更新”,在“电子邮件”栏中填写邮件地址(登录甲骨文官网时注册的),单击“下一步”按钮。图2.2“配置安全更新”窗口(2)在“选择安装选项”窗口中选择“创建和配置数据库”,如图2.3所示,单击“下一步”按钮。图2.3“选择安装选项”窗口(3)在“系统类”窗口中根据介绍选择软件安装的类型,如图2.4所示。因本书安装Oracle不是用于生产而是仅用于教学,故这里选择“桌面类”,单击“下一步”按钮。(4)在“典型安装配置”窗口中,选择Oracle的基目录、软件安装路径和数据库文件的存放路径,并选择要安装的数据库版本和字符集(一般都采取默认选项,但须记下以便日后使用),如图2.5所示。稍后安装时,系统会创建一个名为orcl的默认数据库,这里为它设置管理口令为Mm123456,单击“下一步”按钮。图2.4“系统类”窗口图2.5“典型安装配置”窗口

注意:

Oracle 11g 对用户的口令强度有着严格要求,规范的标准口令组合为:小写字母+数字+大写字母(顺序不限),且字符长度还必须保持在Oracle数据库要求的范围之内。系统对此强制检查,用户只有输入了符合规范的口令字符串才被允许继续下面的操作。

设置好后将进行检查,在“执行先决条件检查”窗口中,单击“下一步”按钮。(5)若上一步检查没有问题,就会生成安装设置概要信息,如图2.6所示,可保存这些信息到本地,方便以后查阅。在这步确认后,单击“完成”按钮,系统将依据这些配置开始执行整个安装进程。图2.6“概要”窗口(6)安装完成后,会弹出如图2.7所示的对话框。图2.7 修改管理口令

单击“口令管理”按钮,在弹出的窗口中解锁以下用户账户并修改其口令。

① SYS(超级管理员),口令改为:Change_on_install123。

② SYSTEM(普通管理员),口令改为:Manager123。

③ SCOTT(普通用户),口令改为:Mm123456。

这里的口令也是需要符合oracle口令规范的,请参考前面设置默认数据库管理口令的方式。修改完成,单击“确定”按钮。(7)若安装成功,会出现如图2.8所示的界面,单击“关闭”按钮即可。图2.8 Oracle 11g安装成功

2.2 Oracle数据库的基本结构

Oracle是一种关系数据库管理系统(RDBMS)。关系数据库是按照二维表结构方式组织的数据集合,每个表体现了集合理论中定义的数学概念——关系。在使用数据库之前,理解Oracle数据库的基本结构很重要。

Oracle数据库(Database)是一个数据容器,它包含了表、索引、视图、过程、函数、包等对象,并对其进行统一的管理。用户只有和一个确定的数据库连接,才能使用和管理该数据库中的数据。

下面将分别从数据库的内部结构与外部结构两个角度来探讨数据库。简单地说,内部结构描述了Oracle数据库的内部存储结构,即从技术概念上描述如何组织、管理数据。内部结构包括表空间、表、列、分区、用户、索引、视图、权限、角色、段、盘区、块等。而外部结构则是从“操作系统”角度来看,Oracle 11g数据库的实体构成项目,包括数据文件、重做日志文件和控制文件等。2.2.1 内部结构

1.表空间(TABLESPACE)

表空间是数据库的逻辑划分,一个表空间只属于一个数据库。每个表空间由一个或多个数据文件组成,表空间中其他逻辑结构的数据存储在这些数据文件中。一般Oracle系统完成安装后,会自动建立多个表空间。以下介绍Oracle 11g默认创建的主要表空间。(1)EXAMPLE表空间。EXAMPLE表空间是示例表空间,用于存放示例数据库的方案对象信息及其培训资料。(2)SYSTEM表空间。SYSTEM表空间是系统表空间,用于存放Oracle系统内部表和数据字典的数据,如表名、列名和用户名等。一般不赞成将用户创建的表、索引等存放在SYSTEM表空间中。(3)SYSAUX表空间。SYSAUX表空间是辅助系统表空间,主要存放Oracle系统内部的常用样例用户的对象,如存放CMR用户的表和索引等,从而减少系统表空间的负荷。SYSAUX表空间一般不存储用户的数据,由Oracle系统内部自动维护。(4)TEMP表空间。TEMP表空间是临时表空间,存放临时表和临时数据,用于排序和汇总等。(5)UNDOTBS1表空间。UNDOTBSI表空间是重做表空间,存放数据库中有关重做的相关信息和数据。当用户对数据库表进行修改(包括INSERT、UPDATE和DELETE操作)时,Oracle系统自动使用重做表空间来临时存放修改前的数据。当所做的修改完成并提交后,系统根据需要保留修改前数据的时间长短来释放重做表空间的部分空间。(6)USERS表空间。USERS表空间是用户表空间,存放永久性用户对象的数据和私有信息,因此也被称为数据表空间。每个数据库都应该有一个用户表空间,以便在创建用户时将其分配给用户。

除了Oracle系统默认创建的表空间以外,用户可以根据应用系统的规模及其所要存放对象的情况创建多个表空间,以区分用户数据和系统数据。

2.表(TABLE)

表是数据库中存放用户数据的对象。它包含一组固定的列。表中的列描述该表所跟踪的实体的属性,每个列都有一个名字和若干个属性。表结构的一个样例如图2.9所示。图2.9 表结构样例

3.约束条件(CONSTRAINT)

可以为一个表列创建约束条件。此时,表中的每一行都必须满足约束条件定义所规定的条件。约束条件有以下5种。(1)主键(PRIMARY KEY)。主键是表中的一列或多个列。为表定义主键有如下几个作用:主键包含的列不能输入重复的值,以此来保证一个表的所有行的唯一性;主键也不允许定义此约束的列为NULL值;主键在定义此约束的列中创建了唯一性的索引,利用这个索引可更快地检索表中的行。(2)默认(DEFAULT)约束条件。在表中插入一行数据但没有为列指定值时生成一个在定义表时预先指定的值。(3)检查(CHECK)约束条件。检查约束条件确保指定列中的值符合一定的条件。CHECK列约束条件不能引用一个独立表。非空值约束条件被数据库看成一个CHECK约束条件。(4)唯一性(UNIQUE)约束条件。唯一性约束条件用于保证应具有唯一性而又不是主键的一部分的那些列的唯一性。(5)外键(FOREIGN KEY)约束条件。外键约束条件规定表间的关系性质。一个外键使一个表的一列或多列与已定义为主键的表中的一批相同的列相关联。当在已定义主键约束的表中更新列值时,其他表中定义有外键约束的列会被自动更新。

主键约束和外键约束保证关联表的相应行持续匹配,以至于它们可以用在后面的关系连接中。在它们被定义为主键约束和外键约束后,不同表的相应列会自动更新,称为引用完整性声明。

数据库的约束条件有助于确保数据的引用完整性。引用完整性保证数据库中的所有列引用都有效且全部约束条件都得到满足。

4.分区(PARTITION)

在非常大的数据库中,可以通过把一个大表的数据分成多个小表来简化数据库的管理,这些小表称为分区。除了对表分区外,还可以对索引进行分区。分区不仅简化了数据库的管理还改善了其应用性能。在Oracle中,能够细分分区,创建子分区。例如,可以根据一组值分割一个表,然后再根据另一种分割方法分割分区。

5.索引(INDEX)

在关系数据库表中,一个行数据的物理位置无关紧要。为了能够找到数据,表中的每一行都用一个RowID来标识。RowID告诉数据库这一行的准确位置,包括所在的文件、该文件中的块和该块中行地址。

索引是帮助用户在表中快速地找到记录的数据库结构。它既可以提高数据库性能,又能够保证列值的唯一性。当CREATE TABLE命令中规定有UNIQUE或PRIMARY KEY约束条件子句时,Oracle就会自动创建一个索引。也可以通过CREATE INDEX命令来手工创建自己的索引。

6.用户(USER)

用户账号虽然不是数据库中的一个物理结构,但它与数据库中的对象有着重要的关系,这是因为用户拥有数据库的对象。例如,用户SYS拥有数据字典表,这些表中存储了数据库中其他对象的所有信息;用户SYSTEM拥有访问数据字典表的视图,这些视图供数据库其他用户使用。

为数据库创建对象(例如表)必须在用户账户下进行。可以对每一个用户账户进行自定义,以便将一个特定的表空间作为它的默认表空间。

把操作系统的账户和数据库账户联系在一起,这样可以不必既输入操作系统口令,又输入数据库的口令。

7.方案(SCHEMA)

用户账户拥有的对象集称为用户的方案(SCHEMA)。可以创建不能注册到数据库的用户账户。这样的用户账户提供一种方案,这种方案可以用来保存一组其他用户方案分开的数据库对象。

8.同义词

为了给不同的用户使用数据库对象时提供一个简单的、唯一标识数据库对象的名称,可以为数据库对象创建同义词。同义词有公用同义词和私有同义词两种。

9.权限及角色(ROLE)

为了访问其他账户所有的对象,必须首先被授予访问这个对象的权限。权限可以授予给某个用户或PUBLIC,PUBLIC把权限授予数据库中的全体用户。

可以创建角色即权限组来简化权限的管理。可以把一些权限授予一个角色,而这个角色又可以被授予多个用户。在应用程序中,角色可以被动态地启用或禁用。

10.段(SEGMENT)、盘区(EXTENT)和数据块(DATA BLOCK)

依照不同的数据处理性质,可能需要在数据表空间内划分出不同区域,以存放不同数据,将这些区域称为“段”(SEGMENT)。例如,存放数据的区域称为“数据区段”、存放索引的区域称为“索引区段”。

由于段是一个物理实体,所以必须把它分配到数据库中的一个表空间中(放在表空间的一个数据文件中)。而段其实就是由许多盘区组合而成的。当段中的空间用完时,该段就获取另外的盘区。

数据块是最小的储存单元,Oracle数据库是操作系统块的倍数。图2.10说明了段、盘区和数据块之间的关系。图2.10 段、盘区和数据块之间的关系2.2.2 外部结构

1.数据文件(DATAFILE)

每一个Oracle数据库都有一个或多个数据文件,而一个数据文件只能属于一个表空间。数据文件创建后可改变大小,创建新的表空间需要创建新的数据文件。数据文件一旦加入到表空间,就不能从这个表空间中移走,也不能和其他表空间发生联系。

如果数据库对象存储在多个表空间中,可以通过把它们各自的数据文件存放在不同的磁盘上来对其进行物理分割。数据库、表空间和数据文件之间的关系如图2.11所示。图2.11 数据库、表空间和数据文件之间的关系

2.重做日志文件(REDO LOG FILES)

除了数据文件外,最重要的Oracle数据库实体档案就是重做日志文件(Redo Log Files)。Oracle保存所有数据库事务的日志。这些事务被记录在联机重做日志文件(Online Redo Log File)中。当数据库中的数据遭到破坏时,可以用这些日志来恢复数据库。

一个数据库至少需要两个重做日志文件。Oracle以循环方式向重做日志文件写入。第一个日志被填满后,就向第二个日志文件写入,然后依此类推。当所有日志文件都被写满时,就又回到第一个日志文件,用新事务的数据对其进行重写。

3.控制文件(CONTROL FILES)

每个Oracle数据库都有一个控制文件,用以记录与描述数据库的外部结构。它们包括:(1)Oracle数据库名称与建立时间;(2)数据文件与重置日志文件名称及其所在位置;(3)日志记录序列码(Log Sequence Number)。

每当数据库被激活时,Oracle会在实例激活后立刻读取控制文件内容,待所有数据库外部结构文件所在信息都收集完毕,数据库才会启动。为了避免控制文件毁损导致数据库系统停止,建议用户至少配置两个控制文件,并存放在不同的硬盘上。2.2.3 数据库实例

数据库实例(Instance)也称为服务器(Server),是指用来访问数据库文件集的存储结构系统全局区(System Global Area,SGA)及后台进程的集合。一个数据库可以被多个实例访问,这是Oracle的并行服务器选项。实例与数据库之间的关系如图2.12所示。图2.12 实例与数据库之间的关系

每当启动数据库时,系统全局区首先被分配,并且有一个或多个

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载