数据库实例概述_第1页
数据库实例概述_第2页
数据库实例概述_第3页
数据库实例概述_第4页
数据库实例概述_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

第7章数据库实例本章内容Oracle实例概述Oracle内存结构Oracle后台进程本章要求掌握Oracle实例基本概念掌握Oracle实例的内存结构、功能及管理了解Oracle进程分类及其作用掌握Oracle后台进程、功能及管理7.1实例概述Oracle实例的概念Oracle数据库主要由放在磁盘中的物理数据库和对物理数据库进行管理的数据库管理系统。其中数据库管理系统是处于用户与物理数据库之间的一个中间层软件,又称为实例,由一系列内存结构和后台进程组成。在启动数据库时,Oracle首先在内存中获取一定的空间,启动各种用途的后台进程,即创建一个数据库实例,然后由实例装载数据文件和重做日志文件,最后打开数据库。用户操作数据库的过程实质上是与数据库实例建立连接,然后通过实例来连接、操作数据库的过程。数据库与实例的关系单实例数据库系统多实例数据库系统实例组成内存结构:系统全局区(SGA)和程序全局区(PGA)后台进程组成

处理数据的内存结构实例

后台进程

客户应用程序

服务器进程

数据库实例SGA日志缓存共享池数据字典缓冲区库缓冲区DBWRSMONPMONCKPTLGWROthers用户进程服务器进程PGA控制文件数据文件归档日志文件参数文件口令文件重做日志文件数据库数据库缓存7.2Oracle内存结构系统全局区(SystemGlobalArea,SGA)程序全局区(ProgramGlobalArea,PGA)SGASGA是由Oracle分配的共享内存结构,包含一个数据库实例共享的数据和控制信息。当多个用户同时连接同一个实例时,SGA数据可供多个用户共享,SGA又称为共享全局区(SharedGlobalArea)。用户对数据库的各种操作主要在SGA中进行。该内存区随数据库实例的创建而分配,随实例的终止而释放。PGAPGA是在用户进程连接数据库、创建一个会话时,由Oracle为用户分配的内存区域,保存当前用户私有的数据和控制信息,因此该区又称为私有全局区(PrivateGlobalArea)。每个服务器进程只能访问自己的PGA,所有服务器进程的PGA总和即为实例的PGA的大小。SGA包含的的内存存结构构有::数据高高速缓缓冲区区(DatabaseBufferCache)共享池池(SharedPool)重做日日志缓缓冲区区(RedoLogCache)大型池池(LargePool)Java池(JavaPool)流池((StreamsPool)其他结结构((如固固定SGA、锁管管理等等)(1)数据据高速速缓冲冲区功能存储从从数据据文件件中检检索出出来的的数据据拷贝贝。应应用程程序要要访问问的数数据必必须从从磁盘盘的数数据文文件读读到数数据缓缓冲区区中处处理。。在数据据缓冲冲区中中被修修改后后的数数据由由数据据写入入进程程写到到硬盘盘的数数据文文件中中永久久保存存。提高获获取和和更新新数据据的性性能。。数据高高速缓缓冲区区的工工作过过程缓冲块块的类类型脏缓存存块((DirtyBuffers)脏缓存存块中中保存存的是是已经经被修修改过过的数数据。。当一一条SQL语句对某某个缓存存块中的的数据进进行修改改后,这这个缓存存块就被被标记为为脏缓存存块。它它们最终终将由DBWR进程写入入数据文文件,以以永久性性地保存存修改结结空闲缓存存块(FreeBuffers)空闲缓存存块中不不包含任任何数据据,它们们等待后后台进程程或服务务器进程程向其中中写入数数据。当当Oracle从数据文文件中读读取数据据时,将将会寻找找空闲缓缓存块,,以便将将数据写写入其中中命中缓存存块(PinnedBuffers)正被使用用,或者者被显式式地声明明为保留留的缓存存块。这这些缓存存块始终终保留在在数据高高速缓冲冲区中,,不会被被换出内内存。缓存块的的管理脏缓存块块列表::包含那那些已经经被修改改但还没没有写入入数据文文件的脏脏缓存块块。LRU列表(LeastRecentlyUsed):包含含所有的的空闲缓缓存块、、命中缓缓存块和和那些还还没有来来得及移移入到脏脏缓存块块列表中中的脏缓缓存块。。在该列列表中,,最近被被访问的的缓存块块被移动动到列表表的头部部,而其其他缓存存块向列列表尾部部移动,,最近最最少被访访问的缓缓存块最最先被移移出LRU列表,从从而保证证最频繁繁使用的的缓存块块始终保保存在内内存中。。数据高速速缓冲区区大小数据高速速缓冲区区越大,,用户需需要的数数据在内内存中的的可能性性就越大大,即缓缓存命中中率越高高,从而而减少了了Oracle访问硬盘盘数据的的次数,,提高了了数据库库系统执执行的效效率。然然而,如如果数据据高速缓缓冲区的的值太大大,Oracle就不得不在内内存中寻找更更多的块来定定位所需要的的数据,反而而降低了系统统性能。显然然需要确定一一个合理的数数据高速缓冲冲区大小。DB_CACHE_SIZE(标准块)(2)重做日志缓缓冲区功能重做日志缓冲冲区用于缓存存用户对数据据库进行修改改操作时生成成的重做记录录。为了提高工作作效率,重做做记录并不是是直接写入重重做日志文件件中,而是首首先被服务器器进程写入重重做日志缓冲冲区中,在一一定条件下,,再由日志写写入进程(LGWR)把重做日志志缓冲区的内内容写入重做做日志文件中中做永久性保保存。在归档档模式下,当当重做日志切切换时,由归归档进程(ARCH)将重做日志志文件的内容容写入归档文文件中重做日志缓冲冲区的工作过过程重做日志缓冲冲区的大小LOG_BUFFER较大的重做日日志缓冲区,,可以减少对对重做日志文文件写的次数数,适合长时时间运行的、、产生大量重重做记录的事事务。(3)共享池池功能共享池用于缓缓存最近执行行过的SQL语句、PL/SQL程序和数据字字典信息,是是对SQL语句、PL/SQL程序进行语法法分析、编译译、执行的区区域。组成库缓存库缓存用于缓缓存已经解释释并执行过的的SQL语句和PL/SQL程序代码,以以提高SQL或PL/SQL程序的执行效效率。包括SQL工作区和PL/SQL工作区数据字典缓存存区数据字典缓存存区保存最常常用的数据字字典信息共享池大小SHARED_POOL_SIZE合适的共享池池大小,可使使编译过的程程序代码长驻驻内存,大大大降低重复执执行相同的SQL语句、PL/SQL程序的系统开开销,从而提提高数据库的的性能。(4)大型池池功能大型池是一个个可选的内存存配置项,主主要为Oracle多线程服务器器、服务器I/O进程、数据库库备份与恢复复操作、执行行具有大量排排序操作的SQL语句、执行并并行化的数据据库操作等需需要大量缓存存的操作提供供内存空间。。如果没有在在SGA区中创建大型型池,上述操操作所需要的的缓存空间将将在共享池或或PGA中分配,因而而影响共享池池或PGA的使用效率。。大型池大小LARGE_POOL_SIZE(5)Java池功能Java提供对Java程序设计的支支持,用于存存储Java代码、Java语句的语法分分析表、Java语句的执行方方案和进行Java程序开发。Java池大小JAVA_POOL_SIZE通常不小于20M,以便安装Java虚拟机(6)流池功能流池是一个可可选的内存配配置项,用于于对流的支持持。流池大小STREAMS_POOL_SIZE的管理SGA组件大小调整整DB_CACHE_SIZELOG_BUFFERSHARED_POOL_SIZELARGE_POOL_SIZEJava_POOL_SIZESTRAMS_POOL_SIZESGA_MAX_SIZE注意除了SGA_MAX_SIZE不能修改外外,其他几几个参数可可以使用ALTERSYSTEM语句进行动动态调整。。SGA自动管理在Oracle10g中,通过设设置初始化化参数SGA_TARGET,可以实现现对SGA中的数据高高速缓冲区区、共享池池、大型池池、Java池和流池的的自动管理理,即这几几个组件的的内存调整整不需要DBA来干预,系系统自动进进行调整。。但是对于于日志缓冲冲区、非标标准块的数数据高速缓缓冲区、保保留池、回回收池等其其他区域的的调整还需需要DBA使用ALTERSYSTEM语句手动进进行调整。。设置SGA自动管理的的方法计算参数SGA_TARGET的大小SELECT((SELECTSUM(value)FROMV$SGA)-(SELECTCURRENT_SIZEFROMV$SGA_DYNAMIC_FREE_MEMORY))/1024/1024||'MB'"SGA_TARGET"FROMDUAL;设置参数SGA_TARGET通过ALTERSYSTEM语句设置参参数SGA_TARGET的值,该值值可以是((1)中计算出出来的结果果,也可以以是当前SGA大小与SGA_MAX_SIZE之间的某个个值。例如如将SGA中与自动管管理相关的的组件大小小设置为0ALTERSYSTEMSETSHARED_POOL_SIZE=0;SQL>ALTERSYSTEMSETLARGE_POOL_SIZE=0;SQL>ALTERSYSTEMSETJava_POOL_SIZE=0;SQL>ALTERSYSTEMSETLARGE_POOL_SIZE=0;SQL>ALTERSYSTEMSETSTREAMS_POOL_SIZE=0;如果要取消消自动管理理,只需将将参数SGA_TARGET设置为0即可。7.2.3PGA功能PGA是为每一个个与Oracle数据库连接接的用户保保留的内存存区,主要要存储该连连接使用的的变量信息息和与用户户进程交换换的信息。。是非共享享的,只有有服务进程程本身才能能访问它自自己的PGA区组成由排序区、、会话区、、游标区以以及堆栈区区组成排序区主要要用于存放放排序操作作所产生的的临时数据据,其大小小由初始化化参数SORT_AREA_SIZE定义;会话话区用于保保存用户会会话所具有有的权限、、角色、性性能统计信信息;游标标区用于存存放执行游游标操作时时所产生的的数据;堆堆栈区用于于保存会话话过程中的的绑定变量量、会话变变量等信息息。UserprocessStackspaceSessioninformationsortarea,cursorinformationSGASharedSQLareasSGASessioninformationPGADedicatedserverSharedserverServer

processSharedSQLareasStackspacesortarea,cursorinformation在OEM中管理数据据库实例的的内存结构构7.3Oracle后台进程Oracle进程概述Oracle后台进程7.3.1Oracle进程概述进程的概念念进程是操作作系统中一一个独立的的可以调度度的活动,,用于完成成指定的任任务。进程程与程序的的区别在于于:进程是动态态的概念,,即动态创创建,完成成任务后立立即消亡;;而程序是是一个静态态实体。进程强调执执行过程,,而程序仅仅仅是指令令的有序集集合。进程的类型型用户进程服务器进程程后台进程用户进程当用户连接接数据库执执行一个应应用程序时时,会创建建一个用户户进程,来来完成用户户所指定的的任务。服务器进程程服务器进程程由Oracle自身创建,,用于处理理连接到数数据库实例例的用户进进程所提出出的请求。。用户进程程只有通过过服务器进进程才能实实现对数据据库的访问问和操作。。服务器进程程分为专用用服务器进进程和共享享服务器进进程两种。。服务器进程程主要完成成以下任务务:解析并执行行用户提交交的SQL语句和PL/SQL程序;在SGA的数据高速速缓冲区中中搜索用户户进程所要要访问的数数据,如果果数据不在在缓冲区中中,则需要要从硬盘数数据文件中中读取所需需的数据,,再将它们们复制到缓缓冲区中;;将用户改变变数据库的的操作信息息写入日志志缓冲区中中。将查询或执执行后的结结果数据返返回给用户户进程。后台进程后台进程作作用为了保证Oracle数据库在任任意一个时时刻可以处处理多用户户的并发请请求,进行行复杂的数数据操作,,而且还要要优化系统统性能,Oracle数据库起用用了一些相相互独立的的附加进程程,称为后后台进程。。服务器进进程在执行行用户进程程请求时,,调用后台台进程来实实现对数据据库的操作作。后台进程主主要完成以以下任务::在内存与磁磁盘之间进进行I/O操作;监视各个服服务器进程程状态;协调各个服服务器进程程的任务;;维护系统性性能和可靠靠性等。后台进程DBWR数据库写入入进程LGWR日志写入进进程CKPT检查点进程程SMON系统监控进进程PMON进程监控进进程ARCH归档档进进程程RECO恢复复进进程程LCKn封锁锁进进程程Dnnn调度度进进程程Snnn共享享服服务务器器进进程程(1)DBWR(数据据库库写写入入进进程程)功能能::数据据库库写写入入进进程程负负责责把把数数据据高高速速缓缓冲冲区区中中已已经经被被修修改改过过的的数数据据((“脏”缓存存块块))成成批批写写入入数数据据文文件件中中永永久久保保存存,,同同时时使使数数据据高高速速缓缓冲冲区区有有更更多多的的空空闲闲缓缓存存块块,,保保证证服服务务器器进进程程将将所所需需要要的的数数据据从从数数据据文文件件读读取取到到数数据据高高速速缓缓冲冲区区中中,,提提高高缓缓存存命命中中率率。。InstanceSGADatabaseBuffer

CacheDBWnControlfilesDatafilesRedologfilesDatabase启动动DBWR进程程执行行INSERT、UPDATE等操操作作时时,,没没有有足足够够的的空空闲闲块块当检检查查点点发发生生时时,,将将启启动动DBWR进程程当数数据据缓缓存存的的LRU列表表的的长长度度达达到到初初始始化化DB_BLOCK_WRITE_BATCH指定定值值的的一一半半时时若发发生生超超时时((大大约约3秒未未被被启启动动))LGWR(日日志志写写入入进进程程))功能能日志志写写入入进进程程负负责责把把重重做做日日志志缓缓冲冲区区的的数数据据写写入入重重做做日日志志文文件件中中永永久久保保存存。。数据据写写入入进进程程在在工工作作之之前前,,需需要要了了解解日日志志写写入入进进程程是是否否已已经经把把相相关关的的日日志志缓缓冲冲区区中中记记载载的的数数据据写写入入硬硬盘盘中中,,如如果果相相关关的的日日志志缓缓冲冲区区中中的的记记录录还还没没有有被被写写入入,,DBWR会通通知知LGWR完成成相相应应的的工工作作,,然然后后DBWR才开开始始写写入入。InstanceSGADBWnRedoLogBufferControlfilesDatafilesRedologfilesLGWRDatabase启动LGWR进程用户通过过COMMIT语句提交交当前事事务重做日志志缓存被被写满三三分之一一DBWR进程开始始将脏缓缓存块写写入数据据文件每隔3秒,即发发生一次次超时,,将启动动LGWR事务提交交机制快速提交交组提交CKPT(检查点点进程))检查点概概念检查点是是一个事事件,当当该事件件发生时时(每隔隔一段时时间发生生),DBWR进程把数数据高速速缓冲区区中脏缓缓存块写写入数据据文件中中,同时时Oracle将对数据据库控制制文件和和数据文文件的头头部的同同步序号号进行更更新,以以记录下下当前的的数据库库结构和和状态,,保证数数据的同同步。InstanceSGADWW0RedoLogBufferLGWRInstanceSGADBWnLGWRCKPTControlfilesDatafilesRedologfilesCKPT进程的作作用更新控制制文件与与数据文文件的头头部,使使其同步步触发DBWR进程,将将脏缓存存块写入入数据文文件检查点的的级别数据库检检查点::每一次次日志切切换时,,执行一一个数据据库检查查点,DBWR进程将数数据高速速缓冲区区中的脏脏缓存块块写入数数据文件件中;表空间检检查点::当一个个表空间间设置为为脱机状状态时,,执行一一个表空空间检查查点,DBWR进程把把数据据高速速缓存存中与与该表表空间间相关关的脏脏缓存存块写写入数数据文文件中中。时间检检查点点:可可以设设置以以时间间为基基础的的检查查点,,每隔隔一段段时间间执行行一次次检查查点。。需要要为检检查点点设置置一个个合适适的执执行间间隔,,间隔隔太短短,将将会产产生过过多的的硬盘盘I/O操作;;间隔隔太长长,数数据库库的恢恢复将将耗费费太多多时间间。检查点点事件件的触触发每一个个日志志切换换时当实例例以如如下方方式关关闭时时NORMAL,TRANSACTION,IMMEDIATE当使用用ALTERTABLESPACE[OFFLINENORMAL|READONLY|BEGINBACKUP],作用用于某某个数数据文文件上上的检检查点点发生生时.设置以以时间间为基基础的的检查查点事事件当数据据库管管理员员需要要手工工操作作时ALTERSYSTEMCHECKPOINT与检查查点的的相关关初始始化参参数LOG_CHECKPOINT_INTERVAL用来指指定重重做日日志文文件每每写多多少操操作系系统块块发生生一次次检查查点事事件例如重重做日日志文文件1M,系统统操作作块为为1K:设置置此参参数为为500,则重重做日日志文文件写写入500K时,检检查点点事件件发生生LOG_CHECKPOINT_TIMEOUT用来指指定每每隔多多长时时间发发生一一次检检查点点如1800,表示示每隔隔1800秒,如如果为为0,表示示此参参数无无效ELOG_CHECKPOINT_TO_ALERT用于设设置是是否将将检查查点信信息记记录到到警告告日志志中数数SMON(系统统监控控进程程)功能在实例例启动动时负负责对对数据据库进进行恢恢复;;回收不不再使使用的的临时时空间间。将各个个表空空间的的空闲闲碎片片合并并(表表空间间的存存储参参数PCTINCREASE不为0时)。。InstanceSGASMONControlfilesDatafilesRedologfilesInstanceSGASMONDatabasePMON(进程监控控进程)功能负责恢复失失败的用户户进程或服服务器进程程,并且释释放进程所所占用的资资源;清除非正常常中断的用用户进程留留下的孤儿儿会话,

温馨提示

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

评论

0/150

提交评论