第2章Oracle数据库的体系结构课件_第1页
第2章Oracle数据库的体系结构课件_第2页
第2章Oracle数据库的体系结构课件_第3页
第2章Oracle数据库的体系结构课件_第4页
第2章Oracle数据库的体系结构课件_第5页
已阅读5页,还剩139页未读 继续免费阅读

下载本文档

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

文档简介

第2章Oracle数据库的体系结构第2章Oracle数据库的体系结构12.1Oracle数据库的物理存储结构Oracle数据库的物理存储结构由存储在磁盘中的操作系统文件组成。包括构成数据库的各种物理文件,包括数据文件,控制文件,重演日志文件,归档重演日志文件,参数文件,警告、跟踪日志文件和备份文件等。2.1Oracle数据库的物理存储结构Oracle数据库2Oracle数据库存储结构

物理存储结构数据文件(DataFile)重做日志文件(RedoLogFile)控制文件(ControlFile)逻辑存储结构表空间(TableSpace)段(Segment)区(Extent)块(Block)Oracle数据库存储结构物理存储结构3Oracle数据库文件类型及其关联Oracle数据库文件类型及其关联42.1.1数据文件(DataFile)数据库中所有的数据最终都保存在数据文件中。每个Oracle数据库都有一个或多个物理数据文件数据文件中包括表数据索引数据数据字典定义回滚事务所需的信息存储过程、函数和数据包的代码用来排序的临时数据2.1.1数据文件(DataFile)数5一个数据文件只能与一个数据库相关联(N:1)。可以对数据文件设置一些特性,在数据库空间用完的情况下可以自动扩展。一个或多个数据文件构成了一个数据库存储的逻辑单元——表空间(tablespace)。

提示:表空间是数据库存储的逻辑单位。数据库文件如果离开了表空间将失去意义,而表空间如果离开了数据文件将失去物理基础数据文件的特点数据文件的特点6例:使用数据字典dba_data_files查看表空间system所对应的数据文件的部分信息。SQL>descdba_data_files;SQL>selectfile_name,tablespace_name,autoextensiblefromdba_data_fileswheretablespace_name=‘SYSTEM’;dba_data_files表结构:例:使用数据字典dba_data_files查看表空间sys7查询执行结果:查询执行结果:82.1.2控制文件数据库控制文件(controlfile)是一个很小的二进制文件,用于维护数据库的全局物理结构,它存放着数据库中数据文件和日志文件的信息。创建数据库时,同时就提供了与之对应的控制文件。每一个控制文件只能与一个Oracle数据库相关联。控制文件包含了数据库实例在启动和正常操作时,访问数据库所需的关于数据库的信息。一旦损坏,数据库将无法正常工作2.1.2控制文件数据库控制文件(controlfil9查询当前数据库的控制文件信息(使用数据字典:V$controlfile)提示:Oracle一般会默认创建3个包含相同信息的控制文件,分别存储在不同磁盘互为镜像,以防其中之一受损时,数据库可以调用其他控制文件继续工作SQL>columnnameformata50;SQL>selectnamefromV$controlfile;查询当前数据库的控制文件信息提示:Oracl10控制文件包含的信息数据库名称数据库创建的时间戳相关的数据文件、重演日志文件的名称和位置表空间信息数据文件脱机范围日志历史归档日志信息备份组和备份块信息备份数据文件和重演日志信息数据文件拷贝信息当前日志序列数检查点(checkpoint)信息控制文件包含的信息数据库名称112.1.3重做日志文件每一个Oracle数据库都有一个由两个或多个重演日志文件(redologfile)构成的文件组,这组重演日志文件合称为数据库的重演日志。一个重演日志文件是由重做条目(redoentry,也叫重做记录)组成的。重演日志的主要功能是记录下所有数据的改变。重演日志文件中的信息可以用在数据库从系统失败或者介质失败的恢复之中。

记录数据库所有修改信息的文件,简称日志文件,是数据库最重要的文件之一。其中修改信息包括数据的修改信息或者数据库结构的修改信息等。2.1.3重做日志文件每一个Oracle数据库都有一个由12为了确保日志文件的安全,在实际应用中,允许对日志文件进行镜像,它们构成一个日志文件组,同一个族的日志文件最好放在不同的磁盘中。Oracle中的多个日志文件组是循环使用的。当所有的日志文件组的空间都被填满后,系统将重新切换到第一个日志文件组,发生日志切换时,日志文件组中已有的信息是否被覆盖取决于系统运行的模式(归档模式和非归档模式。)日志文件组为了确保日志文件的安全,在实际应用中,允许对日志文件进行镜像132.1.4其他文件

1.归档重演日志文件归档重演日志文件(archivelogfile)就是对写满的重演日志文件进行复制并保存而生成的文件。

可以通过设置数据库为归档模式(ARCHIVELOGmode)下来自动地保存日志文件。归档进程(ARCO)在后台负责把写满的重演日志文件复制到归档日志目标中。归档日志文件在数据库恢复时起决定性作用。2.1.4其他文件1.归档重演日志文件142.参数文件(parameterfile)

参数文件包含了一组关于数据库和实例的配置参数。主要包括数据库名和控制文件所在路径。有文本参数文件(parameterFile,简称Pfile。ini<SID>.ora)和服务器参数文件(ServerParameterFile,简称Spfile,spfile<SID>.ora)两种类型。

Oracle推荐用户使用一个服务器参数文件作为维护初始化参数的动态手段。一个服务器参数文件允许用户在一个服务器端的磁盘文件里持久地保存和管理初始化参数。2.参数文件(parameterfile)153.警告、跟踪日志文件

每一个服务器和后台进程都可以写入一个相关的跟踪文件(tracefile)。当一个进程发现了一个内部错误的时候,它把关于错误的信息转储到它的跟踪文件里。写入到跟踪文件的一部分信息是给数据库管理员使用的,而其他信息是给Oracle支持服务的。跟踪文件信息还可以用于调整应用程序和实例。警告文件(alertfile)是一种特殊的跟踪文件,一个数据库的警告文件就是包括按时间排序的消息和错误的记录。

3.警告、跟踪日志文件每一个服务器和后台进程都164.备份文件用户管理的备份和恢复实际上就是要求用户在试图恢复备份的时候先还原备份文件。服务器管理的备份和恢复管理了备份过程,例如,调度备份及恢复过程就是在需要恢复的时候施加正确的备份文件。4.备份文件用户管理的备份和恢复实际上就是要求用17主要的逻辑存储结构:表空间各种段数据段索引段临时段回滚段区间数据块2.2Oracle数据库的逻辑存储结构表空间段数据块数据块数据库表空间段区区………Oracle数据库的逻辑结构主要的逻辑存储结构:2.2Oracle数据库的逻辑存储结18表空间是Oracle中最大的逻辑存储结构,它与物理上的一个或多个数据文件相对应,每个Oracle数据库都至少拥有一个表空间。表空间的大小等于构成表空间的所有数据文件大小的总和。表空间用于存储用户在数据库中创建的所有的内容。2.2.1表空间(Tablespace)表空间是Oracle中最大的逻辑存储结构,它与物理上的一个或19表空间与数据文件的关系一个表空间与硬盘上的一个或多个物理数据文件相对应。表空间与数据文件的关系20例:通过数据字典dba_tablespaces,查看当前数据库的所有表空间的名称SQL>selecttablespace_namefromdba_tablespaces;Oracle自动创建的表空间的说明:见P23页中表2-1例:通过数据字典dba_tablespaces,查看当前数据21系统表空间临时表空间工具表空间用户表空间数据库索引表空间回滚表空间主要的数据库表空间主要的数据库表空间22Oracle允许在逐个表空间基础上控制数据库数据的可用性在联机表空间中的数据对于应用程序和数据库来说是可用的在脱机表空间中的数据对于应用程序和数据库来说是不可用的,即使当数据库是可用的也是如此。联机和脱机表空间Oracle允许在逐个表空间基础上控制数据库数据的可用性联机23永久表空间和临时表空间在Oracle数据库中,大多数表空间是永久表空间。永久表空间存储单个SQL请求和事务中必须存留的信息。Oracle还允许在数据库中创建临时表空间。临时表空间使事务能够用于处理复杂SQL操作的大量临时工作空间,如存储查询、连接查询和建立索引等。永久表空间和临时表空间在Oracle数据库中,大多数表空间是24段是一组盘区,是Oracle管理数据库对象的单位。是终端用户能处理的最小单位。Oracle为段分配的空间是以数据区为单位的,当断的数据区已满,Oracle围棋分配另一个数据区。段的数据区可以是不连续的磁盘空间。段可以分为:数据段、索引段、临时段、回退段四种类型。2.2.2段(Segment)段是一组盘区,是Oracle管理数据库对象的单位。是终端用户251.数据段用于存储表中的数据。数据段的名称与表的名称相同。系统为分区表的每个分区分配一个数据段。2.索引段用于存储表中国的所有索引信息。索引段的名称与索引相同。分区索引的每一个分区对应一个索引段。3.临时表临时段用于存储临时数据。排序或者汇总时所产生的临时数据都存储在临时段中,该段由系统在用户的临时表空间中自动创建,兵在排序或者汇总结束是自动消除。4.回退段用于存储用户数据被修改之前的值。用于用户进行回退(恢复)操作时使用。每个Oracle数据库至少拥有一个回退段。1.数据段用于存储表中的数据。数据段的名称与表的名称相同。262.2.3区(EXtent)区时磁盘空间分配的最小单位,由一个或多个数据块组成。当段中的所有空间被使用完后,系统将自动为该段分配一个新的区。段所包含的区的个数由:minextents和maxextents参数决定。2.2.3区(EXtent)区时磁盘空间分配的最小单位,由272.2.4数据块是用来管理存储空间的最基本的单位,也是最小的逻辑存储单位。块头部:包含数据块中的饿一般属性信息,如物理地址、所属断的类型等。表目录:用来存储相关对象的信息。行目录:用来存储数据块中有效的行信息。空闲空间:数据块中还没有使用的存储空间。行空间:数据块中已使用的存储空间块头部表目录行目录空闲空间行空间块头部信息区块的默认大小,由db_block_size参数在数据库创建时指定,一旦数据库创建成功后无法修改。2.2.4数据块是用来管理存储空间的最基本的单位,也是最小282.2.5表空间、段、分区和数据块的关系图2.2.5表空间、段、分区和数据块的关系图292.3Oracle数据库系统结构与实例Oracle数据库系统结构包括:Oracle实例(Instance)、数据库文件、用户进程、服务器进程,以及其他文件如:密码文件、和归档文件(ArchiveLogFile)等。Oracle数据库管理系统包括:Oracle数据库和Oracle实例Oracle数据库是一组相关的操作系统文件的集合2.3.1Oracle数据库系统结构2.3Oracle数据库系统结构与实例Oracle数据库30LibrarycacheDatadictcacheOracle数据库系统结构LibraryDatadictOracle数据库系统结构31Oracle系统结构图Oracle系统结构图322.3.2Oracle数据库实例Oracle实例由一些内存区和后台进程组成。内存区域主要包括:数据库高速缓存、共享池、流池以及其他可选内存区(如java池)。后台进程主要由:系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、日志写进程(LGWR)、检验点进程(CKPT)、其他进程(如ARCn进程、RECO进程)2.3.2Oracle数据库实例Oracle331.实例和数据库之间的关系1.实例和数据库之间的关系342.Oracle实例与参数文件每个实例都要用称为SID(systemidentifier,系统标识符)的符号来标识决定实例的大小及组成的参数存储在初始化参数文件(init.ora)中,启动实例时读取这个文件,在运行时可由数据库管理员修改对该文件的任何修改都只有在数据库下一次启动时才起作用2.Oracle实例与参数文件每个实例都要用称为SID352.3.3Oracle数据库系统的内存结构1.系统全局区(SGA)主要部分组成数据库高速缓存区共享池重做日志缓存区大缓存池固定的SGA。缓冲区域共享区域系统全局区(SGA)软件代码区域栈空间会话信息其他区程序全局区(PGA)Oracle内存结构图2.3.3Oracle数据库系统的内存结构1.系统全局区36数据库高速缓存区

(DatabaseBufferCache)图2.8数据库高速缓存区用于存储从磁盘数据文件中读取的数据,供所有用户共享,以提高数据库的整体效率数据库高速缓存区

(DatabaseBufferCach37共享池Sharepool图2.9共享池中的内存结构

用于保存最近执行的SQL语句、PL/SQL程序的数据字典信息,以用于系统对其进行语法分析、编译和执行的内存区域。共享池Sharepool图2.9共享池中的内存结构38重做日志缓存区用于在内存中存储未被刷新写入联机重做日志文件的重做信息是Oracle在循环方式下使用的先进先出的缓冲区大小可在初始化参数文件中由logbuffer参数设定,以字节为单位大缓存池是Oracle的一个可选内存区,主要用于多线程的服务器或备份还原等操作固定的SGA用于存储极大量的值。为了对实例进行操作,这些值需要在内部进行记录。重做日志缓存区39程序全局区(PGA)

独立于SGA,不会出现在SGA中。由操作系统在本地分配。在系统全局区可用的共享内存连接到Oracle数据库的进程的私有的内存区--程序全局区(PGA)程序全局区不能共享程序全局区含有单个进程工作时需要的数据、控制信息、进程会话变量和内部数组等程序全局区(PGA)

独立于SGA,不会出现在SGA中。由操402.3.4Oracle数据库系统的后台进程图2.10典型的Oracle后台进程集合

在NT服务器上,后台进程的执行是作为OracleService的多线程实现的,它允许Oracle进程更有效地使用共享内存地址空间,从而减少了NT操作系统处理。Oracle数据库启动时,会启动多个Oracle后台进程,用于异步执行不同的特定任务。通过查询数据字典v$bgprocess可以查看它们的相关信息。2.3.4Oracle数据库系统的后台进程图2.1041DBWn进程:数据库写入进程,负责将数据缓冲区中的数据写入数据文件。其主要有以下几个作用:管理数据缓冲区,一遍用户进程总能找到空闲的缓冲区。将所有修改后的缓冲区数据(dirtydata)写入数据文件。使用LRU算法将最近使用过的块保留在内存中。通过延迟些来优化磁盘I/O读写。DBWn进程最多可以启动20个,分别命名为DBW0,DBW1….DBW9,DBWa,,,DBWj。由参数db_writer_processes决定。LGWR进程日志写入进程,负责管理日志缓冲区的后台进程。将日志信息同步的写入在线日志文件组中。若整个日志文件组均无法使用,则进程会被挂起,直至问题被解决。CKPT进程检验点进程。一般在发生日志切换时自动产生,用于缩短实例恢复所需要的时间。在检查点期间,该进程更新控制文件与数据文件的标题,从而反映最近成功SCN(系统更改号)。参数Log_checkpoint_timeout:设置检查点产生的时间间隔,默认1800秒。参数Log_checkpoint_interval:设置一个检查点需要填充的日志文件块的数目。默认为0。DBWn进程:42SMON进程:系统监控进程,所负责的工作有:数据库实例故障恢复管理和维护表空间中的空闲空间系统启动期间,回收所有表空间中的临时段PMON进程:用户进程监控进程,负责用户进程故障恢复,清理释放用户进程的内存区域。周期性检查调度进程和服务器进程状态。ARCn进程:归档进程。用于将邪门的日志文件复制到归档日志文件中,防止日志文件组中的日志信息被覆盖或者破坏。运行在数据库服务器归档模式下。RECO进程:存在于分布式数据库系统中,用于自动解决在分布式数据库系统中出现的事务故障。主要负责事务回滚,保持分布式系统中数据的一致性。SMON进程:系统监控进程,所负责的工作有:432.3.5数据库字典Oracle数据库字典(datadictionary),是存储在数据库中的所有对象信息的知识库,Oracle数据库管理系统使用数据字典获取对象信息和安全信息。而用户和数据库系统管理员则用数据字典查询数据库信息。数据字典中保存有数据库中对象和段的信息,如:表、索引、视图、包、存储过程以及与用户、权限、角色、审计和约束等相关的信息数据字典试只读的,用户不能修改数据信息和结构。数据字典主要有:user视图,all视图,dba视图,v$视图,GV$视图。详见P32表2-2。2.3.5数据库字典Oracle数据库字典(datadi442.4Oracle数据库的应用结构主要的应用结构有:多磁盘结构磁盘映像系统客户/服务器系统多线程服务器系统并行数据库系统分布式数据库系统OracleWebServer系统2.4Oracle数据库的应用结构主要的应用结构有:452.4.1多磁盘结构图2.14多磁盘结构上的Oracle服务器

2.4.1多磁盘结构图2.14多磁盘结构上的Ora462.4.2磁盘映像系统磁盘映像的好处。磁盘映像可以作为磁盘失效时的备份来使用。可以改进系统的性能2.4.2磁盘映像系统磁盘映像的好处。472.4.3客户/服务器系统

应用程序运行在客户端的工作站上,Oracle数据库运行在服务器上,二者通过以太网连接在一起。为了使客户和服务器易于连接,Oracle提供了SQL*Net的高层网络协议。在客户/服务器环境下,所有客户都安装了SQL*Net客户端软件,服务器则安装相应的服务端软件。SQL*Net提供了一个程序代码的公用接口,而不用考虑其底层的实现。2.4.3客户/服务器系统应用程48基于客户/服务器的Oracle系统

图2.15基于客户/服务器的Oracle系统基于客户/服务器的Oracle系统图2.15基于客户49客户机与服务器通信必须进行的几步操作服务器必须配置成通过网络接受通信。服务器必须识别哪个数据库允许网络登录。服务器必须运行SQL*Net。客户机必须配置成通过网络进行通信。客户机必须有充足的内存和磁盘资源可供使用。客户机必须已安装有SQL*Net,并指定一个连接字符串。客户机与服务器通信必须进行的几步操作服务器必须配置成通过网络50三层模式的Oracle系统computerserver客户机1客户机2数据库服务器应用程序服务器图2.16三层模式的Oracle系统三层模式的Oracle系统computerserver客户机51三层配置的优点可量测性有利于应用程序的执行易于分布式处理提高了性能能简化对客户机的维护三层配置的优点可量测性522.4.4多线程服务器系统多线程服务器(MTS)允许多用户会话共享一组服务器进程,因而减少了支持大量用户所必要的资源开销。同时,多线程服务器的体系结构也允许降低这些服务器会话的全部空闲时间。多线程服务器的体系结构不同于专用服务器。共享服务器进程不直接与调度器或服务器进程交互,而是监控请求队列。

2.4.4多线程服务器系统多线程服务器(MTS)允许多用53多线程服务器的下列参数进行设置mts_dispatchersmts_serversmts_max_servers可以通过在SQL*Plus中查询动态视图V$SESSION来确定当前连接到启动数据库的类型,若结果是DEDICATED,则目前是专用服务器配置;若结果是SHARED,则目前是多线程服务器。查询命令为:{SELECTserverFROMV$SESSIONWHEREaudsid=USERENV('SESSIONID');}多线程服务器的下列参数进行设置mts_dispatchers542.4.5并行数据库系统配置针对一个Oracle实例访问的数据库针对两个或两个以上数据库实例(服务器)访问同一个数据库--Oracle并行服务器(oracleparallelserver,OPS)2.4.5并行数据库系统配置针对一个Oracle实例访问553个独立的Oracle实例共享同一数据库文件

图2.18Oracle并行服务器

3个独立的Oracle实例共享同一数据库文件图2.1856并行服务器的好处可以增加数据库资源的数量或净值数量允许数据库为更多的用户处理更多的工作提供了一种对灾难进行恢复的手段可以根据执行的进程的类型对用户进行分组,并且大量占用CPU的用户可以留在与常规联机处理事务相分离的一个主机上并行服务器的好处可以增加数据库资源的数量或净值数量57设计使用并行数据库时需要注意的问题可以使用不同的初始化参数配置在并行服务器数据库上运行的各种实例。用户可以把系统设计为使用具有一个或多个富余实例的并行服务器,以便在主实例不可获取时仍能支持自己的所有用户。如果硬件可以支持足够的节点,可以在相同的数据库上使用并行服务器的伸缩特性及故障恢复能力。设计使用并行数据库时需要注意的问题可以使用不同的初始化参数配58设计使用并行数据库时需要注意的问题在设计多实例数据库时,在伸缩特性及故障恢复能力这两个功能之间进行明确的区分是非常重要的。需要做好准备修改单实例数据库使用的初始化参数文件中的参数,以使并行服务器使用的多个实例可以成功地相互作用。

设计使用并行数据库时需要注意的问题在设计多实例数据库时,在伸59在并行方式下启动一个实例的两种方法需要将初始化文件中的parallelserver设为true。通过在SQL*Plus的STARTUP命令中包括PARALLEL或SHARED关键字。在数据库管理器总控台的实例管理屏上使用SHARED单选按钮。在并行方式下启动一个实例的两种方法需要将初始化文件中的par602.4.6分布式数据库系统

分布式数据库系统是作为一个单独的数据库但位于不同场所的系统。这些场所可以在任何地方,可以在紧邻的办公室,也可以在地球的另一端。在一个由不同节点连接起来的网络环境中,分布式数据库担当一个单独的系统。在一个分布式环境中,不同服务器(主机)上的数据库彼此共享数据。每个服务器既能在物理上分离,又可以保持彼此间的逻辑关系。2.4.6分布式数据库系统分布式数61分布式数据库系统图2.19分布式数据库系统分布式数据库系统图2.19分布式数据库系统62分布式事务会的好处其他服务器上的数据库可以被更新,并且这些事务可以与其他事务组成一个逻辑单元数据库对2PC的使用分布式事务会的好处其他服务器上的数据库可以被更新,并且这些事63接收的数据库的3种响应方式准备好——已准备好进行更新只读——没有准备的必要退出——子处理不能执行更新接收的数据库的3种响应方式642.4.7OracleWebserver系统随着网络技术的迅猛发展,数据库技术也面临着一场深刻的变革OracleWebServer相当于一个简单请求传送者的角色OracleWebServer支持用内建的过程创建HTML文档2.4.7OracleWebserver系统随着网络65OracleWebServer的基本组成及功能

Web监听器在Oracle主机上的HTTP引擎,它接受并管理服务请求,它可以监听多个远程客户的服务请求并把这些请求交给Web请求代理器Web请求代理器一个异步请求处理程序,它具有一个能使它与各种后端程序组件动态无缝地进行交互的应用程序接口公共网关接口和Web请求代理器的作用类似,也是把用户的请求与Web服务器联系起来一些Cartridge是Oracle中的一些组件或称为工具的一组程序OracleWebServer的基本组成及功能Web监66OracleWebServer的体系结构

图2.20OracleWebServer的体系结构OracleWebServer的体系结构图2.20672.5本章小结介绍了Oracle10g数据库系统的体系结构数据库是通过各种存储结构有组织地存储数据的Oracle的存储结构可以分为物理结构和逻辑结构Oracle系统是由数据库文件和作用在文件之上的实例构成的Oracle在实际中的广泛应用决定了Oracle数据库的多样的、适用的应用解决方案2.5本章小结介绍了Oracle10g数据库系682.6习题选择题(1) ()是一个小二进制文件,它维护着数据库的全局物理结构,用以支持数据库成功地启动和运行。A. 数据文件 B. 控制文件C. 日志文件 D. 参数文件(2) 如果出现了失败故障,用户修改的数据没有永久地写入到数据文件里,那么就可以利用()找到数据的更改,这样做过的工作就不会丢失了。A. 数据文件 B. 控制文件C. 日志文件 D. 参数文件2.6习题选择题692.6习题填空题(1) 从存储结构的角度来说,Oracle数据库可分为

。(2) Oracle实例,也被称作数据库服务或服务器,是一组

,Oracle使用它们来管理数据库访问。(3) 内存结构是指一个进程在其中进行自身对话或与其他进程对话的内存区域,Oracle使用两种类型的内存结构,一种是

;另一种是

。2.6习题填空题702.6习题简答题(1) 简要介绍表空间和数据文件之间的关系。(2) 简要介绍段、区间和数据块之间的关系。(3) Oracle实例有哪些后台进程,各实现了什么功能?2.6习题简答题712.6习题上机操作题(1) 在SQL*Plus环境下,查询构成一个数据库的各种文件:① 查询构成数据库的数据文件列表;② 查询数据库的控制文件的名字和位置。(2) 在SQL*Plus环境下,查询当前与Oracle的会话,以确定连接到数据库的类型。2.6习题上机操作题72第2章Oracle数据库的体系结构第2章Oracle数据库的体系结构732.1Oracle数据库的物理存储结构Oracle数据库的物理存储结构由存储在磁盘中的操作系统文件组成。包括构成数据库的各种物理文件,包括数据文件,控制文件,重演日志文件,归档重演日志文件,参数文件,警告、跟踪日志文件和备份文件等。2.1Oracle数据库的物理存储结构Oracle数据库74Oracle数据库存储结构

物理存储结构数据文件(DataFile)重做日志文件(RedoLogFile)控制文件(ControlFile)逻辑存储结构表空间(TableSpace)段(Segment)区(Extent)块(Block)Oracle数据库存储结构物理存储结构75Oracle数据库文件类型及其关联Oracle数据库文件类型及其关联762.1.1数据文件(DataFile)数据库中所有的数据最终都保存在数据文件中。每个Oracle数据库都有一个或多个物理数据文件数据文件中包括表数据索引数据数据字典定义回滚事务所需的信息存储过程、函数和数据包的代码用来排序的临时数据2.1.1数据文件(DataFile)数77一个数据文件只能与一个数据库相关联(N:1)。可以对数据文件设置一些特性,在数据库空间用完的情况下可以自动扩展。一个或多个数据文件构成了一个数据库存储的逻辑单元——表空间(tablespace)。

提示:表空间是数据库存储的逻辑单位。数据库文件如果离开了表空间将失去意义,而表空间如果离开了数据文件将失去物理基础数据文件的特点数据文件的特点78例:使用数据字典dba_data_files查看表空间system所对应的数据文件的部分信息。SQL>descdba_data_files;SQL>selectfile_name,tablespace_name,autoextensiblefromdba_data_fileswheretablespace_name=‘SYSTEM’;dba_data_files表结构:例:使用数据字典dba_data_files查看表空间sys79查询执行结果:查询执行结果:802.1.2控制文件数据库控制文件(controlfile)是一个很小的二进制文件,用于维护数据库的全局物理结构,它存放着数据库中数据文件和日志文件的信息。创建数据库时,同时就提供了与之对应的控制文件。每一个控制文件只能与一个Oracle数据库相关联。控制文件包含了数据库实例在启动和正常操作时,访问数据库所需的关于数据库的信息。一旦损坏,数据库将无法正常工作2.1.2控制文件数据库控制文件(controlfil81查询当前数据库的控制文件信息(使用数据字典:V$controlfile)提示:Oracle一般会默认创建3个包含相同信息的控制文件,分别存储在不同磁盘互为镜像,以防其中之一受损时,数据库可以调用其他控制文件继续工作SQL>columnnameformata50;SQL>selectnamefromV$controlfile;查询当前数据库的控制文件信息提示:Oracl82控制文件包含的信息数据库名称数据库创建的时间戳相关的数据文件、重演日志文件的名称和位置表空间信息数据文件脱机范围日志历史归档日志信息备份组和备份块信息备份数据文件和重演日志信息数据文件拷贝信息当前日志序列数检查点(checkpoint)信息控制文件包含的信息数据库名称832.1.3重做日志文件每一个Oracle数据库都有一个由两个或多个重演日志文件(redologfile)构成的文件组,这组重演日志文件合称为数据库的重演日志。一个重演日志文件是由重做条目(redoentry,也叫重做记录)组成的。重演日志的主要功能是记录下所有数据的改变。重演日志文件中的信息可以用在数据库从系统失败或者介质失败的恢复之中。

记录数据库所有修改信息的文件,简称日志文件,是数据库最重要的文件之一。其中修改信息包括数据的修改信息或者数据库结构的修改信息等。2.1.3重做日志文件每一个Oracle数据库都有一个由84为了确保日志文件的安全,在实际应用中,允许对日志文件进行镜像,它们构成一个日志文件组,同一个族的日志文件最好放在不同的磁盘中。Oracle中的多个日志文件组是循环使用的。当所有的日志文件组的空间都被填满后,系统将重新切换到第一个日志文件组,发生日志切换时,日志文件组中已有的信息是否被覆盖取决于系统运行的模式(归档模式和非归档模式。)日志文件组为了确保日志文件的安全,在实际应用中,允许对日志文件进行镜像852.1.4其他文件

1.归档重演日志文件归档重演日志文件(archivelogfile)就是对写满的重演日志文件进行复制并保存而生成的文件。

可以通过设置数据库为归档模式(ARCHIVELOGmode)下来自动地保存日志文件。归档进程(ARCO)在后台负责把写满的重演日志文件复制到归档日志目标中。归档日志文件在数据库恢复时起决定性作用。2.1.4其他文件1.归档重演日志文件862.参数文件(parameterfile)

参数文件包含了一组关于数据库和实例的配置参数。主要包括数据库名和控制文件所在路径。有文本参数文件(parameterFile,简称Pfile。ini<SID>.ora)和服务器参数文件(ServerParameterFile,简称Spfile,spfile<SID>.ora)两种类型。

Oracle推荐用户使用一个服务器参数文件作为维护初始化参数的动态手段。一个服务器参数文件允许用户在一个服务器端的磁盘文件里持久地保存和管理初始化参数。2.参数文件(parameterfile)873.警告、跟踪日志文件

每一个服务器和后台进程都可以写入一个相关的跟踪文件(tracefile)。当一个进程发现了一个内部错误的时候,它把关于错误的信息转储到它的跟踪文件里。写入到跟踪文件的一部分信息是给数据库管理员使用的,而其他信息是给Oracle支持服务的。跟踪文件信息还可以用于调整应用程序和实例。警告文件(alertfile)是一种特殊的跟踪文件,一个数据库的警告文件就是包括按时间排序的消息和错误的记录。

3.警告、跟踪日志文件每一个服务器和后台进程都884.备份文件用户管理的备份和恢复实际上就是要求用户在试图恢复备份的时候先还原备份文件。服务器管理的备份和恢复管理了备份过程,例如,调度备份及恢复过程就是在需要恢复的时候施加正确的备份文件。4.备份文件用户管理的备份和恢复实际上就是要求用89主要的逻辑存储结构:表空间各种段数据段索引段临时段回滚段区间数据块2.2Oracle数据库的逻辑存储结构表空间段数据块数据块数据库表空间段区区………Oracle数据库的逻辑结构主要的逻辑存储结构:2.2Oracle数据库的逻辑存储结90表空间是Oracle中最大的逻辑存储结构,它与物理上的一个或多个数据文件相对应,每个Oracle数据库都至少拥有一个表空间。表空间的大小等于构成表空间的所有数据文件大小的总和。表空间用于存储用户在数据库中创建的所有的内容。2.2.1表空间(Tablespace)表空间是Oracle中最大的逻辑存储结构,它与物理上的一个或91表空间与数据文件的关系一个表空间与硬盘上的一个或多个物理数据文件相对应。表空间与数据文件的关系92例:通过数据字典dba_tablespaces,查看当前数据库的所有表空间的名称SQL>selecttablespace_namefromdba_tablespaces;Oracle自动创建的表空间的说明:见P23页中表2-1例:通过数据字典dba_tablespaces,查看当前数据93系统表空间临时表空间工具表空间用户表空间数据库索引表空间回滚表空间主要的数据库表空间主要的数据库表空间94Oracle允许在逐个表空间基础上控制数据库数据的可用性在联机表空间中的数据对于应用程序和数据库来说是可用的在脱机表空间中的数据对于应用程序和数据库来说是不可用的,即使当数据库是可用的也是如此。联机和脱机表空间Oracle允许在逐个表空间基础上控制数据库数据的可用性联机95永久表空间和临时表空间在Oracle数据库中,大多数表空间是永久表空间。永久表空间存储单个SQL请求和事务中必须存留的信息。Oracle还允许在数据库中创建临时表空间。临时表空间使事务能够用于处理复杂SQL操作的大量临时工作空间,如存储查询、连接查询和建立索引等。永久表空间和临时表空间在Oracle数据库中,大多数表空间是96段是一组盘区,是Oracle管理数据库对象的单位。是终端用户能处理的最小单位。Oracle为段分配的空间是以数据区为单位的,当断的数据区已满,Oracle围棋分配另一个数据区。段的数据区可以是不连续的磁盘空间。段可以分为:数据段、索引段、临时段、回退段四种类型。2.2.2段(Segment)段是一组盘区,是Oracle管理数据库对象的单位。是终端用户971.数据段用于存储表中的数据。数据段的名称与表的名称相同。系统为分区表的每个分区分配一个数据段。2.索引段用于存储表中国的所有索引信息。索引段的名称与索引相同。分区索引的每一个分区对应一个索引段。3.临时表临时段用于存储临时数据。排序或者汇总时所产生的临时数据都存储在临时段中,该段由系统在用户的临时表空间中自动创建,兵在排序或者汇总结束是自动消除。4.回退段用于存储用户数据被修改之前的值。用于用户进行回退(恢复)操作时使用。每个Oracle数据库至少拥有一个回退段。1.数据段用于存储表中的数据。数据段的名称与表的名称相同。982.2.3区(EXtent)区时磁盘空间分配的最小单位,由一个或多个数据块组成。当段中的所有空间被使用完后,系统将自动为该段分配一个新的区。段所包含的区的个数由:minextents和maxextents参数决定。2.2.3区(EXtent)区时磁盘空间分配的最小单位,由992.2.4数据块是用来管理存储空间的最基本的单位,也是最小的逻辑存储单位。块头部:包含数据块中的饿一般属性信息,如物理地址、所属断的类型等。表目录:用来存储相关对象的信息。行目录:用来存储数据块中有效的行信息。空闲空间:数据块中还没有使用的存储空间。行空间:数据块中已使用的存储空间块头部表目录行目录空闲空间行空间块头部信息区块的默认大小,由db_block_size参数在数据库创建时指定,一旦数据库创建成功后无法修改。2.2.4数据块是用来管理存储空间的最基本的单位,也是最小1002.2.5表空间、段、分区和数据块的关系图2.2.5表空间、段、分区和数据块的关系图1012.3Oracle数据库系统结构与实例Oracle数据库系统结构包括:Oracle实例(Instance)、数据库文件、用户进程、服务器进程,以及其他文件如:密码文件、和归档文件(ArchiveLogFile)等。Oracle数据库管理系统包括:Oracle数据库和Oracle实例Oracle数据库是一组相关的操作系统文件的集合2.3.1Oracle数据库系统结构2.3Oracle数据库系统结构与实例Oracle数据库102LibrarycacheDatadictcacheOracle数据库系统结构LibraryDatadictOracle数据库系统结构103Oracle系统结构图Oracle系统结构图1042.3.2Oracle数据库实例Oracle实例由一些内存区和后台进程组成。内存区域主要包括:数据库高速缓存、共享池、流池以及其他可选内存区(如java池)。后台进程主要由:系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、日志写进程(LGWR)、检验点进程(CKPT)、其他进程(如ARCn进程、RECO进程)2.3.2Oracle数据库实例Oracle1051.实例和数据库之间的关系1.实例和数据库之间的关系1062.Oracle实例与参数文件每个实例都要用称为SID(systemidentifier,系统标识符)的符号来标识决定实例的大小及组成的参数存储在初始化参数文件(init.ora)中,启动实例时读取这个文件,在运行时可由数据库管理员修改对该文件的任何修改都只有在数据库下一次启动时才起作用2.Oracle实例与参数文件每个实例都要用称为SID1072.3.3Oracle数据库系统的内存结构1.系统全局区(SGA)主要部分组成数据库高速缓存区共享池重做日志缓存区大缓存池固定的SGA。缓冲区域共享区域系统全局区(SGA)软件代码区域栈空间会话信息其他区程序全局区(PGA)Oracle内存结构图2.3.3Oracle数据库系统的内存结构1.系统全局区108数据库高速缓存区

(DatabaseBufferCache)图2.8数据库高速缓存区用于存储从磁盘数据文件中读取的数据,供所有用户共享,以提高数据库的整体效率数据库高速缓存区

(DatabaseBufferCach109共享池Sharepool图2.9共享池中的内存结构

用于保存最近执行的SQL语句、PL/SQL程序的数据字典信息,以用于系统对其进行语法分析、编译和执行的内存区域。共享池Sharepool图2.9共享池中的内存结构110重做日志缓存区用于在内存中存储未被刷新写入联机重做日志文件的重做信息是Oracle在循环方式下使用的先进先出的缓冲区大小可在初始化参数文件中由logbuffer参数设定,以字节为单位大缓存池是Oracle的一个可选内存区,主要用于多线程的服务器或备份还原等操作固定的SGA用于存储极大量的值。为了对实例进行操作,这些值需要在内部进行记录。重做日志缓存区111程序全局区(PGA)

独立于SGA,不会出现在SGA中。由操作系统在本地分配。在系统全局区可用的共享内存连接到Oracle数据库的进程的私有的内存区--程序全局区(PGA)程序全局区不能共享程序全局区含有单个进程工作时需要的数据、控制信息、进程会话变量和内部数组等程序全局区(PGA)

独立于SGA,不会出现在SGA中。由操1122.3.4Oracle数据库系统的后台进程图2.10典型的Oracle后台进程集合

在NT服务器上,后台进程的执行是作为OracleService的多线程实现的,它允许Oracle进程更有效地使用共享内存地址空间,从而减少了NT操作系统处理。Oracle数据库启动时,会启动多个Oracle后台进程,用于异步执行不同的特定任务。通过查询数据字典v$bgprocess可以查看它们的相关信息。2.3.4Oracle数据库系统的后台进程图2.10113DBWn进程:数据库写入进程,负责将数据缓冲区中的数据写入数据文件。其主要有以下几个作用:管理数据缓冲区,一遍用户进程总能找到空闲的缓冲区。将所有修改后的缓冲区数据(dirtydata)写入数据文件。使用LRU算法将最近使用过的块保留在内存中。通过延迟些来优化磁盘I/O读写。DBWn进程最多可以启动20个,分别命名为DBW0,DBW1….DBW9,DBWa,,,DBWj。由参数db_writer_processes决定。LGWR进程日志写入进程,负责管理日志缓冲区的后台进程。将日志信息同步的写入在线日志文件组中。若整个日志文件组均无法使用,则进程会被挂起,直至问题被解决。CKPT进程检验点进程。一般在发生日志切换时自动产生,用于缩短实例恢复所需要的时间。在检查点期间,该进程更新控制文件与数据文件的标题,从而反映最近成功SCN(系统更改号)。参数Log_checkpoint_timeout:设置检查点产生的时间间隔,默认1800秒。参数Log_checkpoint_interval:设置一个检查点需要填充的日志文件块的数目。默认为0。DBWn进程:114SMON进程:系统监控进程,所负责的工作有:数据库实例故障恢复管理和维护表空间中的空闲空间系统启动期间,回收所有表空间中的临时段PMON进程:用户进程监控进程,负责用户进程故障恢复,清理释放用户进程的内存区域。周期性检查调度进程和服务器进程状态。ARCn进程:归档进程。用于将邪门的日志文件复制到归档日志文件中,防止日志文件组中的日志信息被覆盖或者破坏。运行在数据库服务器归档模式下。RECO进程:存在于分布式数据库系统中,用于自动解决在分布式数据库系统中出现的事务故障。主要负责事务回滚,保持分布式系统中数据的一致性。SMON进程:系统监控进程,所负责的工作有:1152.3.5数据库字典Oracle数据库字典(datadictionary),是存储在数据库中的所有对象信息的知识库,Oracle数据库管理系统使用数据字典获取对象信息和安全信息。而用户和数据库系统管理员则用数据字典查询数据库信息。数据字典中保存有数据库中对象和段的信息,如:表、索引、视图、包、存储过程以及与用户、权限、角色、审计和约束等相关的信息数据字典试只读的,用户不能修改数据信息和结构。数据字典主要有:user视图,all视图,dba视图,v$视图,GV$视图。详见P32表2-2。2.3.5数据库字典Oracle数据库字典(datadi1162.4Oracle数据库的应用结构主要的应用结构有:多磁盘结构磁盘映像系统客户/服务器系统多线程服务器系统并行数据库系统分布式数据库系统OracleWebServer系统2.4Oracle数据库的应用结构主要的应用结构有:1172.4.1多磁盘结构图2.14多磁盘结构上的Oracle服务器

2.4.1多磁盘结构图2.14多磁盘结构上的Ora1182.4.2磁盘映像系统磁盘映像的好处。磁盘映像可以作为磁盘失效时的备份来使用。可以改进系统的性能2.4.2磁盘映像系统磁盘映像的好处。1192.4.3客户/服务器系统

应用程序运行在客户端的工作站上,Oracle数据库运行在服务器上,二者通过以太网连接在一起。为了使客户和服务器易于连接,Oracle提供了SQL*Net的高层网络协议。在客户/服务器环境下,所有客户都安装了SQL*Net客户端软件,服务器则安装相应的服务端软件。SQL*Net提供了一个程序代码的公用接口,而不用考虑其底层的实现。2.4.3客户/服务器系统应用程120基于客户/服务器的Oracle系统

图2.15基于客户/服务器的Oracle系统基于客户/服务器的Oracle系统图2.15基于客户121客户机与服务器通信必须进行的几步操作服务器必须配置成通过网络接受通信。服务器必须识别哪个数据库允许网络登录。服务器必须运行SQL*Net。客户机必须配置成通过网络进行通信。客户机必须有充足的内存和磁盘资源可供使用。客户机必须已安装有SQL*Net,并指定一个连接字符串。客户机与服务器通信必须进行的几步操作服务器必须配置成通过网络122三层模式的Oracle系统computerserver客户机1客户机2数据库服务器应用程序服务器图2.16三层模式的Oracle系统三层模式的Oracle系统computerserver客户机123三层配置的优点可量测性有利于应用程序的执行易于分布式处理提高了性能能简化对客户机的维护三层配置的优点可量测性1242.4.4多线程服务器系统多线程服务器(MTS)允许多用户会话共享一组服务器进程,因而减少了支持大量用户所必要的资源开销。同时,多线程服务器的体系结构也允许降低这些服务器会话的全部空闲时间。多线程服务器的体系结构不同于专用服务器。共享服务器进程不直接与调度器或服务器进程交互,而是监控请求队列。

2.4.4多线程服务器系统多线程服务器(MTS)允许多用125多线程服务器的下列参数进行设置mts_dispatchersmts_serversmts_max_servers可以通过在SQL*Plus中查询动态视图V$SESSION来确定当前连接到启动数据库的类型,若结果是DEDICATED,则目前是专用服务器配置;若结果是SHARED,则目前是多线程服务器。查询命令为:{SELECTserverFROMV$SESSIONWHEREaudsid=USERENV('SESSIONID');}多线程服务器的下列参数进行设置mts_dispatchers1262.4.5并行数据库系统配置针对一个Oracle实例访问的数据库针对两个或两个以上数据库实例(服务器)访问同一个数据库--Oracle并行服务器(oracleparallelserver,OPS)2.4.5并行数据库系统配置针对一个Oracle实例访问1273个独立的Oracle实例共享同一数据库文件

图2.18Oracle并行服务器

3个独立的Oracle实例共享同一数据库文件图2.18128并行服务器的好处可以增加数据库资源的数量或净值数量允许数据库为更多的用户处理更多的工作提供了一种对灾难进行恢复的手段可以根据执行的进程的类型对用户进行分组,并且大量占用CPU的用户可以留在与常规联机处理事务相分离的一个主机上并行服务器的好处可以增加数据库资源的数量或净值数量129设计使用并行数据库时需要注意的问题可以使用不同的初始化参

温馨提示

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

评论

0/150

提交评论