第章OracleDaabase的体系结构_第1页
第章OracleDaabase的体系结构_第2页
第章OracleDaabase的体系结构_第3页
第章OracleDaabase的体系结构_第4页
第章OracleDaabase的体系结构_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章OracleDatabase的体系结构

OracleDatabase11g具有丰富的、强大的体系结构。Oralce数据库的体系结构决定了Oracle如何使用网络、磁盘和内存。本章从四个方面介绍Oracle的体系结构,分别是数据库的物理存储结构、逻辑存储结构、进程结构和内存结构。最后简要的介绍了Oracle中的数据字典的相关内容。本章的学习目标:掌握OracleDatabase的存储结构,包括物理存储结构和逻辑存储结构掌握OracleDatabase的进程结构掌握OracleDatabase的内存结构了解Oracle数据字典13.1存储结构

Oracle数据库的存储结构分为物理存储结构和逻辑存储结构,这两种存储结构既相互独立又相互联系(如图3-1所示)。对于DBA而言,必须对这两种存储结构有清晰的理解,并且要清楚在一个具体数据库应用系统中,这两种存储结构的具体对应关系,否则就不能进行正常的管理操作、数据库备份与恢复、性能优化等。本节重点介绍上述两种存储结构。图3-1物理存储结构和逻辑存储结构之间的联系23.1.1物理存储结构

物理存储结构主要描述Oracle数据库的外部存储结构,即在操作系统中如何组织、管理数据,它是数据库的物理载体。因此,物理存储结构是和操作系统平台有关的。从物理上看,数据库由数据文件、控制文件、重做日志文件等操作系统文件组成。

1.数据文件Oracle数据库有一个或多个物理的数据文件。数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件其特点如下:每一个数据文件只与一个数据库相联系。一个表空间可包含一个或多个数据文件,一个数据文件只能属于一个表空间。当数据库容量越界时,数据文件能够自动扩展。3

进行数据库操作时,系统将从数据文件中读取数据,并存储在Oracle的内存缓冲区中。新建或更新的数据不必立即写入到数据文件中,而是把数据临时存放到内存中,由数据库写入进程(DBWn)决定在适当的时间一次性写入到数据文件中。这样可以大大降低访问磁盘的次数,从而提高系统性能。数据文件的扩展名是.dbf。数据文件和表空间是紧密联系在一起的。表空间是一个数据文件或多个数据文件在逻辑上的统一组织,离开了表空间,则数据文件就成了垃圾文件;而数据文件是表空间在物理上的存在形式,没有数据文件的存在表空间就失去了存在的物理基础。如果要了解数据文件的信息,可以查询数据字典“DBA_DATA_FILES”和数据字典“V$DATAFILE”。字典“DBA_DATA_FILES”描述了全部数据文件的名称、文件标识、大小、对应的表空间信息、自动扩展信息,而字典“V$DATAFILE”描述了数据文件的同步信息。4数据文件的大小可以有两种方式:字节和数据块。数据块是Oracle数据库中数据读写的基本单位,一个数据块对应多个操作系统块。在数据中读写一个数据块时,在操作系统中对应着多个操作系统块的读写。

随着数据块的运行,数据文件中的数据可能越来越多,并最终耗尽数据文件的存储空间。为了存储更多的数据,数据文件的存储空间必须能够扩展。Oracle提供了三种扩展数据文件存储空间的方法。第一种方法是在当前表空间中增加新的数据文件,新数据将被存储在新的数据文件中。第二种方法是手工扩展表空间中的数据文件,在原来的存储空间的基础上,增加一定数量的存储空间。第三种方法是激活数据文件的自动扩展功能,数据库服务器将自动为数据文件分配新的存储空间。52.控制文件

控制文件是数据库中另一种重要的文件,它的功能是记录数据库的结构和状态。它是一个很小的二进制文件,用户无法查看和修改文件的内容。控制文件维护着数据库的全局物理结构,用以支持数据库成功的启动和运行。数据库在启动时需要根据控制文件的内容,查找数据并打开它们。在启动数据库服务器时,首先启动实例,然后才能打开数据库。数据库服务器是通过控制文件在实例和数据库之间建立对应关系的。控制文件中记录了下列信息类型:数据库名称数据库数据文件和日志文件的名称和位置数据库建立日期表空间信息数据文件脱机范围日志历史归档日志信息备份组和备份块信息备份数据文件和重做日志信息数据文件拷贝信息当前日志序列数检查点信息(CHECKPOINT)6在数据库运行的过程中,对数据库结构所作的任何修改都将记录在控制文件中。所以,只要数据库是打开状态的,控制文件就必须处于可写状态。如果,由于某些原因控制文件不能被访问,那么数据库也就不能正常工作了。在一个数据库中至少需要一个控制文件,Oracle建议至少创建两个控制文件,并将它们分别存储在两个磁盘上,这两个文件互相镜像,如果一个文件损坏,数据库服务器可以使用另外一个文件。在正常情况下,这两个文件的内容是完全一样的,数据库服务器只需要从其中一个文件中读取信息,但是对数据库结构所做的任何修改都必须同时写入两个控制文件。3.重做日志文件重做日志文件用于记录对数据库的所有修改信息,包括用户对数据的修改,以及管理员对数据库结构的修改。重做日志文件保证了数据库的安全和数据库的备份与恢复。7重做日志文件帮助Oracle确保用户事务效果的持久性,即使出现计算机故障也不会改变。在更改数据文件中的任意数据之前,日志写入器(LGWR)进程在重做日志文件中存储旧数据(撤销信息)和新数据(重做信息)的一个副本。当计算机出现故障时,Oracle能根据重做日志文件撤销未完成事务(未提交事务)的效用,并检验已完成事务(已提交事务)的变更。重做日志文件的大小由数据库管理员决定。一般所有重做日志文件的大小相同,但这不是必须的。在每个Oracle数据库中,至少有两个重做日志文件组,每组有一个或多个重做日志成员,一个重做日志成员物理地对应一个重做日志文件。在现实作业系统中为确保日志的安全,通常要镜像每个重做日志文件。在同一个日志文件组中,其日志成员的镜像个数最多可达到5个。Oracle以循环方式使用重做日志文件:当一个重做日志文件写满时,Oracle填写下一个,如此循环。84.其他文件

Oracle系统运行时,除了必需的数据文件、控制文件和重做日志文件以外,还有一些其他文件,例如配置文件、临时文件、跟踪和警告文件、备份文件以及归档日志文件等。(1)配置文件最重要的数据库配置文件是包含数据库启动需使用的设置的文件,用于存储SGA(系统全局区)、可选的Oracle特性和后台进程的配置参数。有两种版本,一种为文本文件,称为pfile;另一种为二进制文件spfile,称为服务器参数文件。前者可以使用文本编辑器进行编辑,后者不能直接用文本编辑器进行编辑。(2)临时文件每个Oracle服务器进程都使用内存中一个名为程序全局区(ProgramGlobalArea)的专门的工作区来保存中间结果(如需排序的数据)。临时文件用于内存不充足时的中间存储。9(3)跟踪文件和警告文件每一个服务器和后台进程都可以写入一个相关的跟踪日志文件。比如当系统发现某一个进程有问题的时候,相关的信息就会写到相应的跟踪文件中。可以从数据库的跟踪文件来发现和调试数据库的错误。警告文件,也称警告日志,是一个特别的跟踪文件,它记录着数据库启动、运行中的相关信息,它是按时间顺序进行记录的。(4)备份文件还原一个文件的过程就是用一个备份文件(BACKUPFILE)来替换它。典型情况下,在介质失败或者用户失误导致原有文件损坏或删除的情况下,就需要对其进行恢复。用户管理的备份和恢复实际上就是要求用户在试图恢复备份的时候先还原备份文件,服务器管理的备份和恢复功能管理备份过程。(5)归档重做日志文件归档重做日志文件(ARCHIVELOGFILE)是对写满的重做日志文件进行复制并保存生成的文件。可以通过设置数据库在归档后自动地保存日志文件。归档进程(ARCO)在后台负责把写满的重做日志文件复制到归档日志目标中。归档日志文件在数据库恢复时起决定性作用。10逻辑存储结构构逻辑存储结构构主要描述Oracle数据库的内部部存储结构,,即从技术概概念上描述在在Oracle数据库中如何何组织、管理理数据。因此此,逻辑存储储结构是和操操作系统平台台无关的,是是由Oracle数据库创建建和管理的的。一般可可以通过查查询Oracle数据库的数数据字典找找到逻辑存存储结构的的描述。从逻辑结构构上来讲,,一个数据据库包含若若干个表空空间,不同同类型的数数据存储在在不同的表表空间中,,如系统数数据、用户户数据、临临时数据和和回滚数据据等分别存存储在不同同的表空间间中。表空空间中包含含若干个段段,同一个个表空间中中的数据又又可进一步步根据类型型不同而存存储在不同同的段中,,如数据段段、索引段段、临时段段等。一个个段中又可可以包含若若干个区,,区是Oracle分配存储空空间和回收收存储空间间的基本单单位。区是是由连续的的多个数据据块组成的的,数据块块是Oracle读写数据库库的基本单单位。表空空间、段、、区和数据据块组成了了数据库的的逻辑结构构。(如图图3-2所示)111.表空间表空间是数数据库的逻逻辑划分,,一个数据据库在逻辑辑上由多个个表空间组组成。表空空间相当于于一个容器器,用于将将不同类型型的数据组组织在一起起。表空间间中的数据据在物理上上是存储在在数据文件件中的,一一个表空间间对应一个个或多个数数据文件。。如果表空空间只包含含一个数据据文件,那那么所有数数据都将存存储在这个个数据文件件中。如果果表空间对对应多个数数据文件,,那么数据据将被划分分为几部分分,分别存存放在这些些数据文件件中。表空空间与数据据文件的关关系如图3-3所示。图3-2逻辑存储结结构示意图图图3-3表空间与数数据文件12从图3-3可以看出::一个表空间间有一个或或多个数据据文件,数数据文件用用于在物理理上存储表表空间中所所有逻辑结结构的数据据;表空间中数数据文件的的大小之和和就是表空空间的存储储容量;数据库中表表空间的存存储容量之之和就是数数据库的存存储容量。。在数据库中中引入表空空间的优点点有以下几几点:将系统数据据和用户数数据分开,,有利于保保护重要数数据;可以限制用用户对磁盘盘存储空间间的使用;;将临时数据据与用户数数据分开,,从而减少少用户数据据存储区的的碎片,提提高数据库库的性能;;能够将不同同类型的数数据分别存存放在不同同的磁盘上上,以减少少磁盘的读读写冲突。。可以将访访问频繁的的数据存储储在速度相相对较快的的磁盘上,,从而在整整体上提高高数据库的的性能。各个表空间间可以被单单独设置为为联机或脱脱机状态,,这样可以以在数据库库正常运行行的情况下下,将单个个表空间置置于脱机状状态,并对对其进行备备份或恢复复。13OracleDatabase11g包含以下几几种类型的的表空间::(1)系统表空空间(SYSTEMTablespace)系统表空间间(SYSTEMTablespace)是Oracle数据库必须须具备的部部分。用于于存放表空空间名称、、表空间所所包含的数数据文件等等管理数据据库自身所所需要的信信息,如数数据字典,,数据库对对象的定义义、PL/SQL存储程序的的代码、SYSTEM回滚段等。。(2)辅助表空空间(SYSAUXTablespace)辅助表空间间也是数据据库中一个个必需的表表空间,它它是在创建建数据库时时自动被创创建的,是是对SYSTEM表空间的辅辅助表空间间,以前存存储在SYSTEM表空间中的的数据现在在存储在SYSAUX表空间中,,从而减轻轻了SYSTEM表空间的负负担。另外外,许多以以前需要单单独表空间间的数据现现在都可以以存储在SYSAUX表空间中,,从而减少少了需要维维护的表空空间的数目目。(3)撤销表空空间(UNDOTablespace)撤销表空间间(UNDOTablespace)用于事务的的回滚和撤撤销的表空空间。每个个数据库可可以包含多多个UNDO表空间,在在自动撤销销管理模式式中,每个个Oracle实例都指定定了一个((且只有一一个)UNDO表空间。撤撤销的数据据在UNDO表空间中使使用UNDO区间来管理理,UNDO区间由Oracle自动创建并并维护。在Oracle中,可以将将对数据库库的添加、、修改和删删除等操作作定义在事事务中。事事务中的数数据库操作作是可以撤撤销的,当当事务中的的数据库操操作运行时时,此事务务将绑定在在当前UNDO表空间的一一个UNDO区间上。事事务中对数数据库的改改变被保存存在UNDO表空间中,,当执行回回滚操作时时,可以根根据此内容容恢复数据据。14(4)临时表空空间(TemporaryTablespace)如果系统表表空间是本本地的,则则在创建数数据库时至至少要创建建一个默认认的临时表表空间。如如果删除所所有的临时时表空间,,则SYSTEM表空间将被被用作临时时表空间。。(5)用户表空空间(UsersTablespace)用户表空间间(UsersTablespace)用来存放永永久性用户户对象和私私有信息,,因此也被被称为数据据表空间。。每个数据据库都应该该有一个((或创建一一个)用户户表空间,,以便在创创建用户时时将其分配配给用户,,否则将会会使用SYSTEM表空间。一一般地,系系统用户使使用SYSTEM表空间,非非系统用户户使用USERS表空间。2.段表空间将数数据按照类类型从逻辑辑上分离开开来,如将将用户数据据与系统数数据分别组组织在一个个表空间中中。在同一一个表空间间中,可能能存在不同同类型的数数据库对象象,如表、、索引。Oracle将不同数据据库对象中中的数据以以段的形式式组织在一一起。一个个表空间包包含多个段段,但一个个段只能属属于一个表表空间。15段用于存储储表空间中中某一种特特定的具有有独立存储储结构的对对象的所有有数据,它它由一个或或多个区组组成。按照照段中所存存储数据的的特征和用用途的不同同,可以将将段分为几几种类型,,如图3-4所示。图3-4段的分类(1)数据段数据段存储储表中的所所有数据。。当某个用用户创建表表时,就会会在该用户户的默认表表空间中为为该表分配配一个与表表名相同的的数据段,,以便将来来存储该表表的所有数数据。如果果创建的是是分区表,,则为每个个分区分配配一个数据据段。显然然,在一个个表空间中中创建了几几个表,在在该表空间间中就有几几个数据段段。数据段随着着数据的增增加而逐渐渐地变大。。段的增大大过程就是是通过增加加区的个数数而实现的的。每次增增加一个区区,每个区区的大小是是块的整数数倍。(2)索引段索引段用来来存储索引引中的数据据,当用户户为一个表表创建索引引时,数据据服务器会会自动为该该索引创建建一个索引引段,以便便将来存储储该索引的的所有数据据。索引段段与索引的的名字相同同,并且它它们之间是是一一对应应的。当在在表上创建建主键约束束或唯一性性约束时,,也将产生生相应的索索引段。如如果创建的的是分区索索引,则为为每个分区区索分配一一个索引段段。16(3)临时段临时段用于于存放临时时数据。当当用户执行行排序和汇汇总等操作作时,将会会产生大量量的临时数数据,在该该用户的临临时表空间间中会自动动创建一个个临时段,,排序结束束,临时段段自动消除除,这些临临时数据存存储在临时时段中。在在Oracle中,临时表表空间一般般是通用的的,所有用用户的默认认临时表空空间都是TEMP表空间。当当然可以在在创建用户户之后,指指定临时表表空间。(4)回滚段回滚段用于于存储用户户数据被修修改之前的的值,以便便在特定条条件下回退退用户对数数据的修改改。当用户户执行DML语句时,数数据库服务务器将修改改后的数据据存储在数数据段中,,而将修改改前的数据据作为回滚滚数据存储储在回滚段段中。当用用户回滚事事务时,数数据库服务务器将回滚滚段中的数数据重新写写入表段,,该事务所所做的修改改将取消。。当用户提提交事务时时,回滚段段中的数据据将变为无无效,这时时用户将无无法回滚该该事务。在在数据库中中可以创建建多个回滚滚段。当用用户执行DML操作时,数数据库服务务器将自动动为当前事事务指定一一个回滚段段,用户也也可以通过过命令指定定过一个回回滚段。在在创建数据据库时,系系统在SYSTEM表空间中自自动创建一一个SYSTEM回滚段,SYSTEM回滚段用于于维护Oracle内部的事务务。数据库库管理员可可以通过命命令创建其其它的回滚滚段。173.区区是Oracle分配存储空空间的最小小单位,一一个段由多多个区组成成,一个区区由若干个个连续的数数据块组成成。区的大大小是数据据块大小的的整数倍。。当在数据据库中创建建带有实际际存储结构构的方案对对象时,Oracle将为该对象象分配若干干个区,以以便组成一一个对应的的段来为该该方案对象象提供初始始的存储空空间。当段段中已分配配的区都写写满后,Oracle就为为该该段段分分配配一一个个新新区区,,以以容容纳纳更更多多的的数数据据。。4.数据据块块数据据块块是是Oracle中的的最最小小存存储储单单位位,,也也是是数数据据库库服服务务器器读读写写数数据据的的最最小小逻逻辑辑单单位位。。同同时时数数据据块块还还是是执执行行输输入入输输出出操操作作的的最最小小单单位位。。操操作作系系统统执执行行输输入入输输出出操操作作的的最最小小单单位位是是操操作作系系统统块块。。数数据据库库的的数数据据最最终终是是存存储储在在硬硬盘盘上上的的,,所所以以数数据据块块与与操操作作系系统统中中的的块块有有着着一一定定的的联联系系。。一一个个数数据据块块由由若若干干个个操操作作系系统统块块组组成成,,它它的的大大小小是是操操作作系系统统块块的的整整数数倍倍。。在数数据据块块中中可可以以存存储储各各种种类类型型的的数数据据,,如如表表数数据据、、索索引引数数据据等等。。每每个个数数据据块块的的基基本本格格式式是是一一样样的的,,如如图图3-5所示示。。图3-5数据块的的格式18块头部(header/CommonandVariable):包含数据据块的基基本信息息,如块块的物理理地址、、块所在在段的类类型等。。表目录(TableDirectory):存放表的的信息。。如果一一些表的的数据被被存放在在该块中中,那么么这些表表的相关关信息将将被存放放在表目目录中。。行目录(RowDirectory):存放了此此块中行行数据的的基本信信息,如如行的地地址等。。空闲空间间(FreeSpace):一个块中中未使用用的区域域,可用用于新行行的插入入和已经经存在的的行的更更新。行数据(RowData):是真正存存放表数数据和索索引数据据的地方方。该空空间是已已被数据据行占用用的空间间。头部信息息区(Overhead):块头部、、表目录录和行目目录这三三部分合合称为头头部信息息区。它它不存放放数据,,存放整整个块的的信息,,起到引引导系统统读取数数据的作作用。头头部信息息区一旦旦被损坏坏,整个个数据块块将失效效,数据据块中存存储的数数据将丢丢失。数据块的的标准大大小由初初始化参参数DB_BLOCK_SIZE指定。数数据块的的总容量量实际就就是空间间空间和和行数据据的容量量的总和和。193.2数据库实实例对数据库库的访问问是一个个动态的的过程,,必须通通过数据据库服务务器来进进行。数数据库服服务器不不仅包括括数据文文件,还还包括一一组用来来访问数数据文件件的内存存结构和和后台进进程。这这些内存存结构和和后台进进程称之之为实例例。实例例Oracle体系结构构中最重重要的概概念,本本节重点点阐述实实例,关关于实例例的内部部存储结结构和后后台进程程结构将将在下一一节介绍绍。Oracle数据库系系统指具具有管理理Oracle数据库功功能的计计算机系系统。每每一个运运行的Oracle数据库都都对应一一个Oracle实例(Instance),一个个Oracle实例为存存取和控控制数据据库的软软件机制制。当数数据库服服务器上上的一个个数据库库启动时时,Oracle将分配一一块内存存区间,,叫做系系统全局局区(SGA),并启启动一个个或多个个Oracle进程。因因此实例例是一组组内存结结构和后后台进程程的集合合。20用户访问问数据库库的操作作是通过过实例来来完成的的。实例例通过后后台进程程与数据据库中的的文件进进行交互互,将用用户修改改过得或或新增加加的数据据写入文文件,而而用户对对数据的的所有访访问都是是在实例例的内存存结构中中进行的的。数据据位于内内存中,,用户读读写内存存的速度度要比直直接读写写磁盘快快得多,,而且内内存中的的数据可可以在多多个用户户之间共共享,故故引入实实例在某某个方面面可以提提高数据据访问的的并发性性。当数据库库服务器器启动时时,首先先启动实实例,然然后加载载并打开开数据库库。当用用户访问问数据库库时,数数据库服服务器便便为用户户进程启启动一个个服务器器进程,,负责处处理用户户进程的的所有请请求,例例如将用用户访问问的数据据从数据据文件读读到内存存中。只只有数据据库管理理员才能能启动实实例,并并打开数数据库。。数据库库被打开开后,数数据库管管理员可可以将数数据库关关闭,此此时用户户就无法法访问数数据库中中的数据据。为了区分分不同的的实例,,每个实实例都有有一个系系统标识识符SID,通常SID与数据库库同名。。每个服服务器进进程的命命名也与与SID相匹配。。3.3内存结构构内存结构构是Oracle数据库体体系结构构中最为为重要的的部分之之一,内内存也是是影响数数据库性性能的主主要因素素。在Oracle数据库中中,服务务器内存存的大小小将直接接影响数数据库的的运行速速度,特特别是多多个用户户连接数数据库时时,服务务器必须须有足够够的内存存支持,,否则有有的用户户可能连连接不到到服务器器,或查查询速度度明显下下降。21当实例启启动时,,系统为为实例分分配了一一段内存存空间,,并启动动若干后后台进程程。内存存空间分分成不同同的部分分,分别别用来存存储不同同的信息息,具体体如下::程序代码码。连接会话话的信息息。进程通信信和共享享的相关关信息。。程序运行行过程中中的信息息(例如如当前查查询的状状态等))。缓冲区中中的数据据,如用用户要访访问的数数据、重重做日志志等。这这部分也也叫做SGA。当用户发发出一条条SQL语句时,,首先由由服务器器进程对对用户的的SQL语句进行行语法分分析并执执行,然然后将数数据从数数据文件件读入到到系统的的数据缓缓存区,,修改后后的数据据由服务务器进程程写回到到数据文文件中。。按照系系统对于于内存的的使用方方法不同同,Oracle数据库的的内存可可以分为为系统全全局区(SGA)和程序全全局区(PGA)。22Oracle具有下列列基本的的内存结结构:软件代码码区系统全局局区,包包括数据据库缓冲冲存储区区、日志志缓冲区区和共享享池程序全局局区,包包括栈区区和数据据区排序区其中软件件代码区区用于存存储正在在执行的的或可以以执行的的程序代代码。软软件区是是只读,,可安装装成共享享或非共共享。Oracle系统程序序是可共共享的,,以致多多个ORACLE用户可存存取它,,而不需需要在内内存有多多个副本本。用户户程序可可以共享享也可以以不共享享。排序需要要内存空空间,ORACLE利用该内内存排序序数据,,这部分分空间称称为排序序区。排排序区存存在于请请求排序序的用户户进程的的内存中中,该空空间的大大小为适适就排序序数据量量的大小小,可增增长,但但受初始始化参数数SORT_AREA_SIZER限制。Oracle的内存结结构图如如图3-6所示。图3-6Oracle的内存结结构23系统全局局区(SGA)在计算机机的内存存中不仅仅要存储储数据库库中的数数据,还还要存储储数据字字典的信信息、重重做日志志以及经经过解析析的SQL代码等。。实例中中的这部部分内存存结构叫叫做系统统全局区区(SGA,SystemGlobalArea)。SGA是实例中中最重要要的组成成部分,,一个实实例只有有一个SGA。SGA中的数据据可以在在多个用用户进程程之间共共享。SGA由若干个个缓存和和缓冲池池组成,,不同类类型的数数据存储储在不同同的缓存存和缓冲冲池中。。SGA包含以下下几个数数据结构构。1.数据库缓缓冲区高高速缓存存数据库缓缓冲区高高速缓存存用于存存储用户户最近使使用过的的数据。。当用户户检索时时,数据据库内的的数据先先读取到到该区域域,然后后再经过过处理后后返回给给用户。。在修改改时,被被修改的的数据先先被存储储在数据据库缓冲冲区内,,而不是是马上写写入磁盘盘(该数数据块称称为脏缓缓存块))。只有有当它达达到一定定量或满满足一定定条件后后,Oracle才将它们们写入磁磁盘。这这样可以以减少磁磁盘读写写次数,,提高系系统的存存取效率率,改善善系统性性能。通通常,缓缓冲区高高速缓存存是SGA的最大组组成部分分。242.重做日志志缓冲区区重做日志志是对用用户事务务所产生生的记录录,通过过重做日日志能够够重新产产生数据据,它是是保证数数据安全全的一种种重要方方法。重重做日志志缓冲区区用户缓缓存数据据库的修修改日志志,这些些修改日日志称作作重做项项。重做做项记录录对数据据库数据据块所做做的所有有修改,,它主要要用于数数据库恢恢复。重做日日志缓缓冲区区是一一个圆圆形缓缓冲区区,其其大小小由初初始化化参数数LOG_BUFFER指定。。在一一定能能时机机下,,后台台进程程LGWR会将重重做日日志缓缓冲区区中的的内容容写入入重做做日志志文件件。重重做日日志缓缓冲区区越大大,就就可以以记录录越多多的用用户操操作,,写重重做日日志文文件的的次数数也就就越少少,这这样就就可以以提高高数据据库的的性能能。当当然,,重做做日志志缓冲冲区的的大小小是受受物理理内存存大小小的限限制的的。3.共享池池数据库库中的的数据据是以以表的的形式式存储储的。。当用用户访访问数数据时时,数数据库库服务务器首首先检检查对对应的的表是是否存存在,,然后后检查查指定定的列列是否否存在在,还还要检检查权权限和和加锁锁等信信息。。当这这些检检查通通过时时,数数据库库服务务器将将对用用户的的命令令进行行分析析,产产生分分析代代码和和执行行计划划,然然后按按照这这样的的执行行计划划访问问数据据,并并将执执行结结果返返回给给用户户。25为了提提高数数据库库的性性能,,Oracle在SGA开辟了了一个个共享享池,,用于于存放放与SQL语句的的执行行有关关的信信息。。共享享池由由三部部分组组成,,即数数据字字典缓缓存、、库缓缓存和和服务务器结结果缓缓存。。其中中,数数据字字典缓缓存也也称之之为行行缓存存,主主要存存储最最近使使用的的对象象定义义:表表、索索引、、用户户和其其他元元数据据定义义的描描述。。通过过将此此类定定义放放在SGA的内存存中,,以便便使所所有会会话可可以直直接访访问它它们,,而不不是被被迫从从磁盘盘上的的数据据字典典中重重复读读取它它们,,从而而提高高分析析性能能。库库缓存存是内内存区区域,,按其其已分分析的的格式式存储储最近近执行行的代代码。。分析析就是是将编编程人人员编编写的的代码码转换换为可可执行行的代代码,,这是是Oracle根据需需要执执行的的一个个过程程。通通过将将代码码缓存存在共共享池池,可可以在在不重重新分分析的的情况况下重重用,,极大大地提提高性性能。。服务务器结结果缓缓存是是11g版本的新功功能。在很很多应用程程序中,同同一个查询询将由同一一个会话或或多个不同同会话执行行多次。通通过创建结结果缓存,,Oracle服务器可以以将此类查查询的结果果存储在内内存中。在在下次发出出查询时,,服务器可可以检索缓缓存的结果果,而不是是运行该查查询。总之之,共享池池几乎和数数据库中的的所有操作作有关。所所以,合理理设置共享享池的大小小将对性能能产生重要要影响。4.Java池Java池是SGA中一段可选选的存储区区域。在实实例启动时时,可以为为在SGA中分配一个个Java池,用来存存放运行Java所必需的共共享代码和和共享数据据。多个Java应用程序可可以共享Java池中的代码码和数据。。Java池的大小由由初始化参参数JAVA_POOL_SIZE指定,默认认大小是20MB,大小是动动态的,可可以自动管管理。265.大池大池是数据据库管理员员配置的可可选内存区区域,用于于分配大量量的内存。。大池是个个可选区域域,如果创创建了大池池,则那些些在不创建建大池的情情况下使用用共享池内内存的不同同进程将自自动使用大大池。在共共享服务器器连接、语语句并行执执行或者备备份的时候候都可用到到大池。程序全局区区(PGA)程序全局区区全称ProgramGloableArea,简称PGA,它是内存存中一段特特殊的区域域,包含了了服务器进进程的数据据和控制信信息。这个个内存区是是非共享的的,只有服服务进程本本身才能访访问它自己己的PGA区,而SGA区则是索引引服务进程程都可以共共享的内存存区。当服服务器进程程启动时,,数据库服服务器为它它分配一段段PGA,这个PGA只能由当前前服务器进进程访问。。PGA可以分为堆堆栈区和数数据区两部部分。堆栈栈区将会保保存会话中中绑定的变变量、会话话变量以及及SQL语句运行的的内存结构构等信息。。数据区又又可由会话话区和排序序区组成。。会话区用用于保存会会话所有的的权限、角角色和性能能统计信息息。当运行行使用游标标的语句时时,Oracle会在共享池池中为该语语句分配上上下文区,,游标实际际上是指向向该上下文文区的指针针。游标区区在打开游游标时创建建,关闭游游标时释放放。排序区区用于存放放排序操作作所产生的的临时数据据,它是影影响PGA区大小的主主要因素,,大小由初初始化参数数SORT_AREA_SIZE定义。273.4进程结构进程是操作作系统中的的一种机制制,可执行行一系列的的操作步骤骤。在有些些操作系统统中使用作作业或任务务等类似术术语。Oracle是一个多进进程系统。。Oracle实例中的每每个进程都都执行特定定的任务。。通过把Oracle和数据库应应用程序的的工作分解解成不同的的进程,多多个用户和和应用程序序就可以同同时连接到到一个数据据库实例,,从而可使使系统保持持较好的性性能。在多进程系系统中,进进程分为两两类:用户户进程和Oracle进程。用户户进程指运运行应用程程序或Oracle工具所建立立的进程,,它们向Oracle服务器发送送所要执行行的SQL语句。Oracle进程指运行行Oracle服务器代码码。Oracle进程包括服服务器进程程和后台进进程。服务务器进程用用于处理连连接到数据据库实例的的用户进程程的请求。。系统为了了使性能最最好和协调调多个用户户,在多进进程系统中中使用一些些附加进程程,称为后后台进程。。在许多操操作系统中中,后台进进程在实例例启动时自自动建立。。一个Oracle实例可以有有许多后台台进程,但但它们不是是一直存在在。主要的的后台进程程将在下面面分别介绍绍。3.4.1DBWR数据库写进进程28DBWR进程的功能能是将数据据库高速缓缓存中的脏脏缓冲区内内容写入数数据文件中中的数据块块,故称为为数据库写写进程。当当缓冲区中中的缓冲区区被修改,,标志为““脏缓冲区区”,DBWR的主要任务务是在一定定条件下将将“脏缓冲冲区”的内内容写入数数据文件,,使缓冲区区保持“干干净”。用户执行了了数据操纵纵命令后,,被修改的的缓冲区并并不是被立立即写入数数据文件,,而是保留留一段时间间,即使用用户执行了了COMMIT操作。DBWR进程开始工工作时,它它将把一批批脏缓冲区区的内容一一并写入数数据文件。。这样有两两个优点,,一是减少少了写磁盘盘的次数,,多次写合合并为一次次写;二是是减少了读读磁盘的次次数,因为为如果另外外一个用户户正好也要要对同样的的数据进行行处理,便便可直接在在脏缓冲区区中进行。。Oracle采用LRU算法(最近近最少使用用算法)保保持内存中中的数据块块是最近使使用的,使使I/O最小。用户户访问数据据库时,服服务器进程程如果发现现需要的数数据不在数数据库高速速缓存中,,它将把数数据从数据据文件读到到空闲缓冲冲区中,在在此之前,,服务器进进程要在LRU队列中搜索索合适数量量的空闲缓缓冲区,在在搜索过程程中如果遇遇到一个脏脏缓冲区,,服务器进进程将把它它放到脏队队列中,然然后继续搜搜索。如果果遇到忙缓缓冲区,将将忽略它。。DBWR进程工作时时,将扫描描脏队列,,把那些位位于脏队列列中,并且且最近很少少被访问的的脏缓冲区区写入数据据文件。而而那些虽位位于脏队列列,但最近近仍被频繁繁访问的脏脏缓冲区或或还没有被被记录在脏脏队列中的的脏缓冲区区,仍然保保持“脏””状态,直直到被写入入数据文件件。29DBWR进程在以下下几种情况况执行写操操作:固定的时间间间隔(如如每隔3秒);当数据库服服务器发出出检查点时时;当脏队列中中的缓冲区区数目达到到一定值时时,也就是是说在数据据库高速缓缓存中不能能有太多的的脏缓冲区区;当用户执行行了某操作作,需要在在数据库高高速缓存中中搜索一定定数量的空空闲缓冲区区时,空闲闲缓冲区的的数量不能能满足要求求,这时DBWR进程将把脏脏队列中的的一部分脏脏缓冲区写写入数据文文件,这部部分脏缓冲冲区将重新新成为空闲闲缓冲区。。在一个实例例中可以启启动多个DBRW进程,在在默认情情况下只只启动一一个。DBWR进程并不不是越多多越好。。参数DB_WRITERS控制DBWR进程个数数。进程30LGWR进程的功功能是将将重做日日志缓冲冲区中的的重做日日志未写写入重做做日志文文件,这这是Oracle保证数据据库一致致性的重重要手段段。LGWR进程是负负责管理理日志缓缓冲区的的一个Oracle后台进程程。LGWR进程并不不是随时时都在运运行的,,它被启启动执行行的时机机有以下下几种情情况:固定的时时间间隔隔(如每每隔3秒);当用户进进程提交交一事务务时写入入一个提提交记录录;当日志缓缓冲区已已写满1/3时;DBRW将脏缓冲冲区写入入数据文文件之前前。由此可见见,LGWR进程在DBRW进程写数数据文件件之前先先写了日日志文件件,遵守守了数据据库“先先写日志志文件””的原则则。日志缓冲冲区是一一段可循循环使用用的存储储区域。。当LGWR将日志缓缓冲区的的日志项项写入日日志文件件后,服服务器进进程可将将新的日日志项写写入到该该日志缓缓冲区。。LGWR通常写得得很快,,所以在在任何情情况下日日志缓冲冲区中始始终有空空间可写写入新的的日志项项。31SCN是指系统统改变号号,全称称SystemChangeNumber。Oracle利用重做做日志保保证数据据库的一一致性,,引入了了用于记记录数据据库变化化的一个个数字SCN,它是一一个正整整数。当当用户提提交一个个事务,,发出COMMIT语句时,,一个COMMIT记录立即即放入日日志缓冲冲区,当当相应的的数据缓缓冲区改改变被延延迟,直直到在更更改有效效时才将将它们写写入数据据文件。。一个事事务执行行之后,,便获得得一个新新的SCN,SCN被同时记记录在数数据文件件、控制制文件和和重做日日志文件件中,如如果这三三个文件件的SCN完全一致致,数据据库就达达到了一一个完全全一致的的状态。。每个SCN在整个数数据库中中都是唯唯一的,,永远递递增的和和不可重重复的。。检查点进进程CKPT进程的功功能是发发出检查查点。检检查点是是一种数数据库事事件,当当数据库库服务器器发生检检查点时时,SCN将被写入入数据文文件和控控制文件件,而且且数据库库高速缓缓存中的的脏缓冲冲区将被被DBWR进程写入数据据文件,这时时数据库达到到完全一致的的状态。CKPT进程主要有两两个工作:一一是通知DBWR进程,将数据据库高速缓存存中所有脏缓缓冲区写入数数据文件;二二是发出检查查点BWN和LGWR之间始终有一一个可以预见见的差距。与与早先的完全全检查点机制制相比,增量量检查点有助助于获得更平平稳的性能,,恢复时间也也更易于预测测。32系统监控进程程SMON是系统监控进进程,主要功功能是监控数数据库服务器器的运行状况况,并执行一一些系统清理理及恢复工作作。这些工作作主要包括::清理临时空间间以及临时段段;在字典管理表表空间DMT中接合空闲的的并且是相互互邻近的存储储空间;在数据库服务务器重新启动动时,执行实实例恢复,并并对数据库的的存储空间进进行管理。当实例正常运运行时,SMON进程也会经常常工作,或者者有规律地被被唤醒,被其其他进程调用用。,将SCN的值写入数据据文件和控制制文件的头部部。但是频繁繁的建立检查查点会带来大大量的磁盘I/O,合理设置检检查点的时间间间隔和空间间间隔是非常常重要的。从从Oracle8i开始,DBWN用增量检查点点替代了完全全检查点。增增量检查点机机制要求DBWN以固定速率写写出脏缓冲区区,PMON进程监控进程程PMON是进程监控进进程,功能是是定期检查用用户进程,负负责清理内存存存储区和释释放该进程所所使用的资源源。同SMON一样,PMON周期性地唤醒醒检测它是否否需要被使用用。负责在出出现异常中止止的连接之后后完成清理和和释放资源,,回滚未提交交的事务工作作。还负责监监视其他的Oracle后台进程,并并在必要时重重启这些后台台进程。另外外,PMON还有一个功能能,就是将实实例和调度器器注册到网络络监听器中。。当实例启动动时,PMON进程负责将实实例的信息注注册到监听器器中。如果监监听器没有启启动,PMON进程将周期性性地察看它的的状态。33归档进程该进程将已填填满的在线日日志文件拷贝贝到指定的存存储设备。当当日志是为ARCHIVELOG使用方式、并并可自动地归归档时ARCH进程才存在。。ARCH进程的功能是是在重做日志志文件切换后后将已经写满满的重做日志志文件复制到到归档日志文文件中,使循循环写入重做做日志文件时时会将其覆盖盖的问题解决决了。由于重做日志志是循环使用用的,因此存存在着一组重重做日志文件件写满后会被被覆盖的问题题。Oracle通过提供归档档日志模式来来解决上述问问题。在这种种模式下,数数据库服务器器将自动对重重做日志文件件进行归档。。如果数据库库处于归档日日志模式下,,ARCH进程将自动启启动,当一个个重做日志文文件被写满时时,要进行日日志切换,ARCH进程将对刚刚刚写满的重做做日志文件进进行归档,从从而把重做日日志文件的内内容保存在归归档日志文件件中。如果数数据库处于非非归档日志模模式下,重做做日志文件是是不会被归档档的。注意,,只有数据库库处于归档日日志模式下,,并且启动了了ARCH进程,数据库库服务器才会会自动对重做做日志进行归归档。在一个实例中中可以启动多多个ARCH进程,默认情情况下只启动动4个,最多可以以启动10个归档进程。。34RECO恢复进程RECO进程用于分布布式数据库,,维持在分布布式环境中的的数据的一致致性,自动地地解决在分布布式数据库中中由于网络或或系统故障导导致挂起的分分布式事务。。在规定的时时间间隔内,,本地的RECO进行会试图连连接到远程数数据库,并自自动完成挂起起的分布式事事务在本地的的提交或回滚滚。RECO后台进程仅在在允许分布式式事务的系统统中出现。LCKn锁进程LCKn进程具有并行行服务器选件件环境下使用用,可多至10个进程(LCK0,LCK1,…,LCK9),用于实例间的的封锁。Dnnn调度进程Dnnn进程允许用户户远程共享一一定数量的服服务器进程,,从而支持共共享服务器配配置。在一个个数据库实例例中可建立多多个调度进程程。对每种网网络协议至少少建立一个调调度进程。数数据库管理员员根据操作系系统中每个进进程可连接数数目的限制决决定启动的调调度程序的最最优数目,在在实例运行时时可增加或删删除调度进程程。35其它进进程除了上上述主主要的的进程程以外外,还还有一一些进进程。。例如如Jnnn是作业业队列列进程程,用用于批批量处处理,,运行行用户户作业业。可可以把把作业业队列列进程程看作作是一一个计计划服服务,,用于于在Oracle实例上上安排排PL/SQL语句或或过程程等作作业。。设定定开始始日期期和时时间间间隔,,作业业队列列进程程将在在下一一个时时间间间隔到到来时时运行行指定定的作作业。。QMNn是队列列监控控进程程,对对消息息队列列进行行监控控,最最多可可以定定义10个队列列监控控进程程。Snnn是共享享服务务器进进程,,在共共享服服务器器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论