第1章Oracle11g简介1本章主要内容数据库基本概念回顾Oracle发展简史Oracle与SQLServer的比较Oracle11g的新特性Oracle11g产品组成Oracle11g体系结构第1章Oracle11g简介21.2.1Oracle11g体系结构概述一个数据库服务器可以实现以下功能:1.在多用户网络环境中管理大量的数据,从而保证许多用户同时访问相同的数据。2.防止没有授权的访问。3.提供有效的故障恢复解决方案。OracleServer第1章Oracle11g简介31.2.1Oracle11g体系结构概述•Oracle数据库是按照规定的单位进行管理的数据集合,用于存储并获取相关信息。•Oracle数据库是第一个为企业网格计算(gridcomputing)而设计的数据库系统,Oracle11g的g就代表gridcomputing。•Oracle数据库把数据存储在文件中,这些保存数据库不同信息的文件组成了Oracle的物理结构。第1章Oracle11g简介41.2.1Oracle11g体系结构概述数据库的体系结构可以按照逻辑结构和物理结构来划分:逻辑结构物理结构文件1文件2文件3文件4文件n文件……逻辑单元1逻辑单元2逻辑单元……逻辑单元n多用户网络环境用户1用户2用户3用户4用户……用户n第1章Oracle11g简介51.2.1Oracle11g体系结构概述•Oracle将数据库按照规定的结构划分为不同级别的逻辑单元。这里指的逻辑单元包括表、视图等常见的数据库组件。•逻辑结构和物理结构是分离的,对物理结构的管理可以不影响对逻辑存储结构的访问。第1章Oracle11g简介101.2.3数据库逻辑结构•数据库由表空间或者说由方案组成•Oracle数据库的逻辑结构包括数据块(datablock)、区间(extent)、段(segment)和表空间(tablespace)等。数据库由若干个表空间组成,表空间由表组成,表由段组成,段由区间组成,区间则由数据块组成。第1章Oracle11g简介11SegmentExtentsDatablocksDiskblocks1.2.3数据库逻辑结构–Segmentsexistwithinatablespace(段存在于表空间中)–Segmentsaremadeupofacollectionofextents(段由区间组成)–Extentsareacollectionofdatablocks(区间由数据块组成)–Datablocksaremappedtodiskblocks(数据块映射为物理块)第1章Oracle11g简介121.2.3数据库逻辑结构•表空间和表、段、区间、数据块的关系表段区间1区间2区间3区间4区间n区间……表空间表1表2表3表4表……表n区间数据1数据2数据……数据n段1段2段3段4段……段n数据库逻辑结构14逻辑和物理结构DatabaseLogicalPhysicalTablespaceDatafileOSblockSegmentExtentOracledatablockSchema第1章Oracle11g简介15数据库数据的逻辑结构—表•表数据库中最常用的数据存储单元,它包括所有用户可以访问的数据。作为关系型数据库,Oracle表由行和列组成。列行列名第1章Oracle11g简介16数据库数据的逻辑结构—视图•视图虚拟的表,它在物理上并不存在。视图可以把表或其他视图的数据按照一定的条件组合起来,所以也可以把它看成是一个存储的查询。视图并不包含数据,它只是从基表中读取数据。第1章Oracle11g简介17方案•索引与表相关联的可选结构。创建索引可以提高读取数据的效率。索引的功能类似于书的目录一样,读者可以通过目录很快地在书中找到需要的内容,Oracle索引提供对表数据的访问路径,从而使用户能够快速定位指定的信息。•簇有些表共享公共的列,并经常被同时访问,为了提高数据存取的效率,把这些表在物理上存储在一起,得到的表的组合就是簇。与索引相似,簇并不影响应用程序的设计。用户和应用程序并不关心表是否是簇的一部分,因为无论表在不在簇中,访问表的SQL语句都是一样的。第1章Oracle11g简介18数据块•数据块是Oracle管理数据库存储空间的最小数据存储单位。•一个数据块对应磁盘上一定数量的数据库空间,标准的数据块大小由初始参数DB_BLOCK_SIZE指定。•数据块既是逻辑单位,也是物理单位。•块的大小是操作系统块大小的整数倍.以Win2K为例,操作系统块(OSblock)的大小为4kb,所以OracleBlock的大小可以是4kb,8kb,16kb等等。行数据空闲空间行目录表目录公共的变长头数据块的格式第1章Oracle11g简介19数据块行数据空闲空间行目录表目录公共的变长头•公共的变长头:包含数据块的通用信息,如块地址和段类型等;•表目录:包含在此块中有行数据的表的信息;•行目录:包含此块中实际行数据的信息(包括在行数据区中每个行数据片的地址);•空闲空间:插入新行时需要存储空间,更新行数据时也可能造成存储空间的增加,这些存储空间都需要从空闲空间中分配;•行数据:包含表或索引数据。行数据的存储可以跨越数据块。第1章Oracle11g简介20区间•区间是数据库存储空间中分配的一个逻辑单元,由一组相邻的数据块组成,它是Oracle分配磁盘空间的最小单位。•MINEXTENTS定义了段所能包含的最小区间数量,在创建段时,它所包含的区间数量只能为MINEXTENTS。随着段中数据的增加,区间数量也可以不断增加,但不能超过MAXEXTENTS中定义的数量,否则会出现错误。第1章Oracle11g简介21段•段由一组区间组成。段类型说明数据段每个不在簇中的表都有一个数据段。表中的所有数据都存储在数据段的区间中。每个簇都有一个数据段。簇中每个表的数据都存储在簇的数据段中索引段每个索引都有一个索引段,存储所有的索引数据临时段当执行SQL语句需要临时工作区时,Oracle将创建临时段。执行完毕后,临时段的区间将被系统回收,以备需要时分配使用回滚段如果当前系统处于自动重做管理模式,则数据库服务器使用表空间来管理重做空间。这是Oracle公司推荐使用的模式。但是,如果使用手动重做管理模式,则数据库管理员需要创建一个或多个回滚段,用于临时存储重做信息。回滚段中的信息将在数据库恢复过程中使用到第1章Oracle11g简介22表空间•数据库可以划分为若干的逻辑存储单元,这些存储单元被称为表空间。•每个数据库都至少有一个系统表空间(称为SYSTEM表空间)。•在创建表时,需要定义保存表的表空间。表空间说明大文件表空间(BigfileTablespaces)Oracle10g提供的一种新的表空间,它只能包含一个大文件,但文件大小可以达到4G个数据块系统表空间(SYSTEMTablespace)Oracle数据库必须具备的部分。用于存放表空间名称、表空间所包含的数据文件等管理数据库自身所需要的信息辅助表空间(SYSAUXTablespace)系统表空间的辅助表空间,很多数据库组件把系统表空间作为存储数据的默认位置撤消表空间(UndoTablespace)用于事务的回滚和撤销的表空间临时表空间(TemporaryTablespace)用于存储数据库的临时表用户表空间(UsersTablespace)用于存储用户的私有数据第1章Oracle11g简介23表空间•数据库、表空间和数据文件的关系系统表空间(SystemTablespace)用户表空间(USERSTablespace)DATA1.ORA1MBDATA2.ORA1MBDATA3.ORA4MB•每个表空间由一个或多个数据文件组成。数据文件用于在物理上存储表空间中所有逻辑结构的数据。•表空间中数据文件的大小之和就是表空间的存储容量(图中系统表空间存储容量为2MB,用户表空间的存储容量为4MB)。•数据库中表空间的存储容量之和就是数据库的存储容量。第1章Oracle11g简介24数据库逻辑结构—方案•方案是一组数据库对象的集合。在创建用户的时候,会同时生成一个与用户同名的方案,此方案归同名用户所有。•方案对象直接处理数据库数据的逻辑结构,例如表(table)、视图(view)、索引(index)和簇(Clusters)等。第1章Oracle11g简介25表空间和方案之间的关系•表空间和方案之间的关系•同一方案中的对象可以存储在不同的表空间中•表空间可以存储不同方案中的对象数据库系统表空间(SystemTablespace)用户表空间(USERSTablespace)方案1方案2方案3方案4方案5第1章Oracle11g简介26第1章Oracle11g简介271.2.4数据库物理结构•物理结构由构成数据库的操作系统文件所决定。•每个Oracle数据库都由3种类型的文件组成:数据文件、日志文件和控制文件。第1章Oracle11g简介28数据文件Oracle数据库有一个或多个物理的数据文件。数据库的数据文件包含全部数据库数据。逻辑数据物理地存储在数据文件中。数据文件有下列特征:1.一个数据文件仅与一个数据库联系。2.当数据库容量越界时,数据文件能够自动扩展。3.一个或多个数据文件组成一个表空间。第1章Oracle11g简介29日志文件•每个数据库有两个或多个日志文件组,日志文件组用于收集数据库日志。•日志的主要功能是记录对数据所作的修改,所以对数据库作的全部修改记录在日志中。第1章Oracle11g简介30控制文件•每个Oracle数据库有一个控制文件,记录数据库的物理结构。(类似Windows注册表的作用)•控制文件包含数据库名、数据库数据文件和日志文件的名字、位置和数据库建立日期等信息。第1章Oracle11g简介311.2.4数据库物理结构1.2.5数据库例程•当用户连接到数据库,使用数据库时,实际上连接到该数据库的例程,通过例程来连接、使用数据库。•例程是用户和数据库之间的一个中间层。•例程和数据库的区别:–数据库主要只用于存储数据的物理结构,总是实际存在的–例程是由操作系统的内存结构和一系列的进程组成,可以启动和关闭第1章Oracle11g简介331.2.5数据库例程•每个运行的Oracle数据库都对应一个Oracle例程(Instance),也可以称为实例。•一台计算机上可以创建多个Oracle数据库,一个数据库上可以有多个例程。第1章Oracle11g简介341.2.5数据库例程•为了使例程间不混淆,每个例程都用SID(SystemIDentify)加以区分,即创建这个数据库时填写的“数据库SID”。第1章Oracle11g简介35OracleInstance的组成例程(INSTANCE)是存取和控制数据库的软件机制,它由系统全局区(SystemGlobalArea,简称SGA)和进程组成。进程实例SGA数据高速缓存共享池日志高速缓存Oracle数据库实例支持4种状态打开:启动实例,装载并打开数据库。该模式是默认的启动模式,它允许任何有效用户连接到数据库,并执行典型的数据访问操作。关闭:将Oracle实例从允许用户访问数据库的状态转换为休止状态。关闭操作首先终止用户访问数据库所需的进程,然后释放计算机中供Oracle运行使用的内存。已装载:启动实例并装载数据库,但不打开数据库。该模式用于更改数据库的归档模式或执行恢复操作,还可以用于数据文件恢复。因为此状态下没有打开数据库,所以不允许用户访问。已启动:启动实例,但不装载数据库。该模式用于重新创建控制文件,对控制文件进行恢复或重新创建数据库等。因为此状态下没有打开数据库,所以不允许用户访问数据库。该状态也称为“不装载”。第1章Oracle11g简介37软件结构Oracle数据库服务器主要由两部分组成:物理数据库和数据库管理系统。物理数据库是保存数据的物理存储设备。数据库管理系统是用户与物理数据库之间的一个中间层,是软件层。这个软件层有一定的结构。软件结构内存结