Oracle数据库体系结构详解_第1页
Oracle数据库体系结构详解_第2页
Oracle数据库体系结构详解_第3页
Oracle数据库体系结构详解_第4页
Oracle数据库体系结构详解_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、Oracle体系结构详解(上)一、oracle数据库的整体架构OverviewofPrimaryComponents由上图可知,oracle数据库由实例和数据库组成二、数据库存储结构:2.1数据库存储结构OracleDatabaseParameterfilePasswordfileDatafilesControlfliesRedoLogfilesArchivedLogfilesOracle数据库有物理结构和逻辑结构。数据库的物理结构是数据库中的操作系统文件的集合。数据库的物理结构由数据文件、控制文件和重做日志文件组成。数据文件:数据文件是数据的存储仓库。联机重做日志文件:联机重做日志文件包含对

2、数据库所做的更改记录,在发生故障时能够恢复数据。重做日志按时间顺序存储应用于数据库的一连串的变更向量。其中仅包含重建(重做)所有已完成工作的最少限度信息。如果数据文件受损,则可以将这些变更向量应用于数据文件备份来重做工作,将它恢复到发生故障的那一刻前的状态。重做日志文件包含联机重做日志文件(对于连续的数据库操作时必须的)和归档日志文件(对于数据库操作是可选的,但对于时间点恢复是必须的)。查看系统的redolog的信息SQL>selectgroup#,sequence#,bytes,members,statusfromv$log;GROUP#SEQUENCE#BYTESMEMBERSSTA

3、TUS122524288001INACTIVE223524288001CURRENT321524288001INACTIVESQL>selectmemberfromv$logfile;MEMBER/u01/app/oracle/oradata/hnzk/redo03.log/u01/app/oracle/oradata/hnzk/redo02.log/u01/app/oracle/oradata/hnzk/redo01.log控制文件:控制文件包含维护和验证数据库完整性的必要的信息。控制文件虽小,但作用非常大。它包含指向数据库其余部分的指针:联机重做日志文件和数据文件的位置,以及更新的归

4、档日志文件的位置。它还存储着维护数据库完整性所需的信息。控制文件不过数MB却起着至关重要的作用。除了三个必须的文件外数据库还能有其它非必须的文件如:参数文件、口令文件及归档日志文件。实例参数文件:当启动oracle实例时,SG阁构会根据此参数文件的设置内置到内存,后台进程会据此启动。口令文件:用户通过提交用户名和口令来建立会话。Oracle根据存储在数据字典的用户定义对用户名和口令进行验证。归档重做日志文件:当重做日志文件满时将重做日志文件进行归档以便还原数据文件备份。三、实例的整体架构实例整体架构图:SharedpgilibraryCacheInstanceRedoLogSufferMemo

5、rystructuresLarggPoolDataDictwnaryCdche(bwr)(CKPT)therpn)csstructures实例由内存和后台进程组成,它暂时存在于RAWCPUK当关闭运行的实例时,实例将随即消失。数据库由磁盘上的物理文件组成,不管在运行状态还是停止状态,这些文件就一直存在。因此,实例的生命周期就是其在内存中存在的时间,可以启动和停止。一旦创建数据库,数据库将永久存在。通俗的讲数据库就相当于平时安装某个程序所生成的安装目录,而实例就是运行某个程序时所需要的进程及消耗的内存。Oracle的内存架构包含两部分系统全局区(SGA和程序全局区(PGA3.1 程序全局区程序全

6、局区(PGA) 为每个用户连接到0md.数据库单独分配的内存 当进程创建时分囹 二进程结束时收回 只能被一个进程使用3.2 系统全局区在操作系统提供的共享内存段实现的内存结构称为系统全局区(SGA。SGAfe实例启动时分配,在关闭时释放。在一定范围内,可以在实例运行时通过自动方式或响应DBAW指令,重新调整11g实例中的SGAR其中的组件的大小。SystemGlobalAe己7he£GAconsistsofseveralraemDrystructures:- SharedPool- DatabaseBufferCache- RedoLogBuffer- Otherstructures

7、(torGKamplG,lockandlatchmanagementstatisticaldata)Therearetwoaddkionalm&morystructuresthatcanbewnfiguredwithinthe与GA:-LargePool-JavaPool由上图可知SGA£少包含三种数据结构:数据库缓冲区缓存、日志缓冲区及共享池。还可能包括:大池、JAVA池。可以使用showsga,查看sga的状态。3.1.1共享池共享池由许多子结构组成,这些子结构由oracle服务器内部自动管理。在共享池的总体大小范围内,各个结构的大小将因针对实例的活动模式而异。共享池本身

8、的大小可以动态重调。a.库缓存是内存区域,按其已分析的格式存储最近执行的代码。分析就是将编程人员编写的代码转换为可执行的代码,这是oracle根据需要执行的一个过程。通过将代码缓存在共享池,可以在不重新分析的情况下重用,极大地提高性能。b.数据字典缓存有时称为“行缓存”,它存储最近使用的对象定义:表、索引、用户和其他元数据定义的描述。通过将此类定义放在SGA勺内存中,以便使所有会话可以直接访问它们,而不是被迫从磁盘上的数据字典中重复读取它们,从而提高分析性能。c.PL/SQL区:存储的PL/SQL对象是过程、函数、打包的过程、打包的函数、对象类型定义和触发器。它们全都像源代码那样存储在数据字典

9、中,也使用已编译的格式。当会话调用存储的PL/SQL对象时,它必须从数据字典读取。为了避免重复读取,将对象缓存到共享池的PL/SQL区。共享池的大小对性能产生重要影响,它应该足够大,以便缓存所有频繁执行的代码和频繁访问的对象定义,但也不能过大,以至于连仅执行一次的语句也要缓存。如果共享池过小,则性能下降,因为服务器会话将反复抢夺其中的空间来分析语句,此后,这些语句会被其他语句重写,在重新执行时,将不得不再次分析。过大的共享池也会对性能产生不良影响,因为搜索需要的时间过长。如果共享池小于最优容量,则性能将下降。但有一个最小容量,如果低于此限度,则语句将失败。确定最优容量是一个性能调整问题,大多数

10、数据库都需要一个数百MB的共享池。有些应用程序需要1GB以上的共享池,但很少有应用程序能够在共享池小于100MB时充分运行。共享池在实例启动时分配。从9i开始,可以随时将其调大或调小。可以采用手动方式重调,也可以根据工作负荷自动调整大小。手动调整共享池的大小:selectCOMPONENT,CURRENT_SIZE,MIN_SIZE,MAX_SIZEfromv$sga_dynamic_components;/显示可以动态重设大小的SG创件的当前、最大和最小容量SQL>selectCOMPONENT,CURRENT_SIZE,MIN_SIZE,MAX_SIZEfromv$sga_dynam

11、ic_components;COMPONENTCURRENT_SIZEMIN_SIZEMAX_SIZEsharedpool1048576001006632960largepool419430441943040javapool419430441943040streamspool000DEFAULTbuffercache167772160167772160KEEPbuffercache000RECYCLEbuffercache000DEFAULT2Kbuffercache000DEFAULT4Kbuffercache000DEFAULT8Kbuffercache000DEFAULT16Kbuffe

12、rcache000DEFAULT32Kbuffercache000ASMBufferCache00013rowsselected.SQL>ALTERSYSTEMSETSHARED_POOL_SIZE=110M;Systemaltered.SQL>selectCOMPONENT,CURRENT_SIZE,MIN_SIZE,MAX_SIZEfromv$sga_dynamic_components;COMPONENTCURRENT_SIZEMIN_SIZEMAX_SIZEsharedpool1174405121006632960largepool419430441943040javapo

13、ol419430441943040streamspool000DEFAULTbuffercache1551892481551892480KEEPbuffercacheRECYCLEbuffercache000DEFAULT2Kbuffercache000DEFAULT4Kbuffercache000DEFAULT8Kbuffercache000DEFAULT16Kbuffercache000DEFAULT32Kbuffercache000ASMBufferCache00013rowsselected.3.1.2数据库缓冲区数据库缓冲区数据库缓冲区是oracle用来执行SQL的工作区域。在更新数

14、据时,用户会话不直接更新磁盘上的数据,而是首先复制到数据库缓冲区缓存。更改应用于数据库缓冲区缓存中这些数据块的副本,块将在缓存中保留一段时间,直至其占有的缓冲区需要缓存另一块为止。在查询数据时,数据也要经过缓存。会话计算出那些块包含关键的行,并将它们复制到数据库缓冲区缓存。此后,相关行传输到会话的PGA乍进一步处理。此后数据块会在数据库缓存区缓存中保留一段时间。理想状况下,包含频繁访问的数据的所有块将位于数据库缓冲区缓存中,从而最大程度地减少磁盘I/O的需要。如果缓冲区的缓存中存储的块的映像与磁盘上的映像不同,那么这样的缓冲区常称为“脏缓冲区”。脏缓冲区必须写回到数据文件,然后缓冲区又变得干净

15、了。即使再写入磁盘后,此块也仍留在内存中,可能有一段时间,此缓冲区不会被另一个块所重写。数据库缓冲区缓存的大小会对性能产生至关重要的影响。缓存应足够大,以便能缓存所有频繁访问的块,但也不能太大,以至于它会缓存极少使用的块。如果缓存过小,那么将导致磁盘活动过多,因为频繁访问的块持续从磁盘读取,并由其他块使用和重写,然后再从磁盘读取。数据库缓冲区缓存在实例启动时分配。从数据库9i开始,可以随时将其调大或调小。可以采用手动方式重调,也可以根据工作负荷自动重调大小(如果启用了自动化机制)。(优化的时候会用到)修改DB_CACHE_SIZE方法1.1.1 查看SG从小showparametersga_m

16、ax_sizedb_cache_size的尺寸受SGA的影响为能大于SGA1.1.2 查看showparametershared_pool_size尺寸一般来说shared_pool_size+db_cache_size=SGA_MAX_SIZE*70%fc右经过计算再修改db_cache_sizesql>altersystemsetdb_cache_size=大小Mscope=spfilesid='数据库SID'sql>shutdownimmediatesql>startupsql>showparameterdb_cache_size就可以看到修改后的

17、效果了1.1.3 日志缓冲区日志缓冲区是小型的、用于短期存储将写入到磁盘上的重做日志的变更向量的临时区域。"变更向量”是应用于某些对象的修改,执行DM曲句会生成应用于数据的变更向量。有了重做日志,数据库就保证数据永不丢失,每当数据块放生变更时,都会将应用于块的变更向量写到重做日志,如果需要还原数据文件,则通过重做日志,可以将变更向量提取并应用于数据文件备份。会话服务器进程不将重做记录直接写入到重做日志文件,否则,每当执行DML语句时,会话将不得不等待磁盘I/O操作完成。相反,会话将重做记录写入内存中的日志缓冲区。这样做的速度将远比写入磁盘快。此后,日志缓冲区写出到重做日志文件。写操作由日志写入器后台进程(LGWR先成。日志缓冲区在启动是实例时分配,如果不重新启动实例,就不能在随后调整其大小。在oracle体系结构中,将日志缓冲区转储到磁盘时基本瓶颈之一。DML的速度不能超过LGEFa变更向量转储到联机重做日志文件的速度。如果重做生成是限制数据库性能的因素,唯一的选项是使用RAG在RAO据库中,每个实例都有自己的日志缓冲区和自己的LGWR这是将重做数据并行写入磁盘的唯一方法。1.1.4 大池大池是一个可选区域,如果创建了大池,则那些在不创建大池的情况下使用共享池内存的不同进程将自动使用大

温馨提示

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

评论

0/150

提交评论