《第8章数据库实例与操作模式.ppt》由会员分享,可在线阅读,更多相关《第8章数据库实例与操作模式.ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Oracle 10g 数据库基础教程2010第第8章章 数据库实例数据库实例Oracle 10g数据库基础教程2010本章内容本章内容pOracle实例概述 pOracle内存结构pOracle后台进程Oracle 10g数据库基础教程2010本章要求本章要求p掌握Oracle实例基本概念p掌握Oracle实例的内存结构、功能及管理p了解Oracle进程分类及其作用p掌握Oracle后台进程、功能及管理Oracle 10g数据库基础教程20108.1 实例概述实例概述pOracle实例的概念 nOracleOracle数据库主要由放在磁盘中的数据库主要由放在磁盘中的物理数据库物理数据库和和对物
2、对物理数据库进行管理的理数据库进行管理的数据库数据库管理系统管理系统构成。构成。n其中,其中,数据库管理系统数据库管理系统是处于用户与物理数据库之间是处于用户与物理数据库之间的一个的一个中间层软件中间层软件,又称为,又称为实例实例,由一系列内存结构,由一系列内存结构和后台进程组成。和后台进程组成。Oracle 10g数据库基础教程2010p在启动数据库时,nOracleOracle首先,首先,在内存中获取一定的空间在内存中获取一定的空间,启动各种用,启动各种用途的后台进程,即途的后台进程,即创建一个数据库实例创建一个数据库实例。n然后,由实例然后,由实例装载装载数据文件和重做日志文件。数据文件
3、和重做日志文件。n最后,最后,打开打开数据库。数据库。p用户操作数据库的过程实质上是与数据库实例建立连接,然后通过实例来连接、操作数据库的过程。Oracle 10g数据库基础教程2010p数据库与实例的关系 n 单实例数据库系统单实例数据库系统n多实例数据库系统多实例数据库系统注意注意:同一时间同一时间一个用户一个用户只能与一个只能与一个实例联系。实例联系。Oracle 10g数据库基础教程2010p实例组成 n内存结构:内存结构:系统系统全局区全局区(SGA)和和程序程序全局区全局区(PGA)n后台进程组成后台进程组成 Oracle 10g数据库基础教程2010实例实例SGA日志缓存日志缓存
4、共享池共享池数据字典数据字典缓冲区缓冲区库缓冲区库缓冲区DBWRSMONPMONCKPTLGWROthers用户进程用户进程服务器进程服务器进程PGA控制文件控制文件数据文数据文件件 归档日志归档日志文件文件参数文件参数文件口令文件口令文件重做日志重做日志文件文件物理数据库物理数据库数据库缓存数据库缓存OracleOracle数据库数据库Oracle 10g数据库基础教程20108.2 Oracle内存结构内存结构 内存是Oracle数据库重要的信息缓存和共享区域,主要存储执行的程序代码、连接会话信息以及程序执行期间所需要的数据和共享信息等。p系统全局区(System Global Area,
5、SGA)p程序全局区(Program Global Area,PGA)Oracle 10g数据库基础教程2010pSGAnSGA是由是由Oracle分配的分配的共享内存结构共享内存结构,包含一个数据库实例,包含一个数据库实例共享的共享的数据数据和和控制信息控制信息。当多个用户同时连接同一个实例时,。当多个用户同时连接同一个实例时,SGA数据可供多个用户共享,数据可供多个用户共享,SGA又称为又称为共享全局区共享全局区(Shared Global Area)。n用户对数据库的各种操作主要在用户对数据库的各种操作主要在SGA中进行。该内存区随数中进行。该内存区随数据库实例的创建而分配,随实例的终止
6、而释放。据库实例的创建而分配,随实例的终止而释放。pPGAnPGA是在用户进程连接数据库、创建一个会话时,由是在用户进程连接数据库、创建一个会话时,由Oracle为用户分配的为用户分配的内存区域,保存当前用户内存区域,保存当前用户私有的私有的数据数据和和控制信控制信息息,因此该区又称为,因此该区又称为私有全局区私有全局区(Private Global Area)。n每个服务器进程每个服务器进程只能访问自己的只能访问自己的PGA,所有服务器进程的,所有服务器进程的PGA总和即为实例的总和即为实例的PGA的大小。的大小。Oracle 10g数据库基础教程20108.2.1 SGApSGA包含的内存
7、结构有:n数据高速缓冲区数据高速缓冲区(Database Buffer Cache)n共享池共享池(Shared Pool)n重做日志缓冲区重做日志缓冲区(Redo Log Cache)n大型池大型池(Large Pool)nJava池池(Java Pool)n流池流池(Streams Pool)n其他结构其他结构(如固定如固定SGA、锁管理等、锁管理等)Oracle 10g数据库基础教程2010(1)数据高速缓冲区)数据高速缓冲区p功能n存储存储最近从数据文件中检索出来的数据最近从数据文件中检索出来的数据拷贝,供所有拷贝,供所有用户共享。用户共享。n存储在数据缓冲区中存储在数据缓冲区中被修改
8、后的数据被修改后的数据,然后由数据写,然后由数据写入进程入进程(DBWR)写到硬盘的数据文件中永久保存。写到硬盘的数据文件中永久保存。n提高提高获取和更新数据的获取和更新数据的性能性能。Oracle 10g数据库基础教程2010p数据高速缓冲区的工作过程p数据高速缓冲区由许多大小相等的缓存块组成。处理、存储处理、存储Oracle 10g数据库基础教程2010p缓冲块的类型n脏脏缓存块缓存块(Dirty Buffers)p保存的是保存的是已经被修改过的数据已经被修改过的数据。当一条。当一条SQL语句对某个语句对某个缓存块中的数据进行修改后,这个缓存块就缓存块中的数据进行修改后,这个缓存块就被标记
9、为脏被标记为脏缓存块缓存块。它们最终将由。它们最终将由DBWR进程写入数据文件,以永进程写入数据文件,以永久性地保存修改结果。久性地保存修改结果。n空闲空闲缓存块缓存块(Free Buffers)p不包含不包含任何数据,它们等待后台进程或服务器进程向其任何数据,它们等待后台进程或服务器进程向其中写入数据。当中写入数据。当Oracle从数据文件中读取数据时,将会从数据文件中读取数据时,将会寻找空闲缓存块,以便将数据写入其中。寻找空闲缓存块,以便将数据写入其中。n命中命中缓存块缓存块(Pinned Buffers)p正被使用正被使用,或者,或者被显式地声明为保留的被显式地声明为保留的缓存块。这些缓
10、缓存块。这些缓存块始终保留在数据高速缓冲区中,不会被换出内存。存块始终保留在数据高速缓冲区中,不会被换出内存。Oracle 10g数据库基础教程2010p缓存块的管理 n脏缓存块列表脏缓存块列表:包含那些已经被修改但还没有写入数:包含那些已经被修改但还没有写入数据文件的脏缓存块。据文件的脏缓存块。nLRU列表列表(Least Recently Used):包含:包含p所有的空闲所有的空闲缓存块缓存块p命中命中缓存块缓存块p那些还那些还没有来得及移入到脏缓存块列表中的没有来得及移入到脏缓存块列表中的脏缓存块。脏缓存块。说明:在该列表中,最近被访问的缓存块被移动到列表的说明:在该列表中,最近被访问
11、的缓存块被移动到列表的头部,而其他缓存块向列表尾部移动,最近最少被访问头部,而其他缓存块向列表尾部移动,最近最少被访问的缓存块最先被移出的缓存块最先被移出LRU列表,从而保证最频繁使用的列表,从而保证最频繁使用的缓存块始终保存在内存中。缓存块始终保存在内存中。Oracle 10g数据库基础教程2010p数据高速缓冲区大小数据高速缓冲区大小 n数据高速缓冲区数据高速缓冲区越大越大,缓存,缓存命中率越高命中率越高,从而减少了,从而减少了Oracle访问硬盘数据的次数,提高了数据库系统执行访问硬盘数据的次数,提高了数据库系统执行的效率。然而,如果数据高速缓冲区的值的效率。然而,如果数据高速缓冲区的值
12、太大太大,Oracle就不得不在内存中寻找更多的块来定位所需要就不得不在内存中寻找更多的块来定位所需要的数据,的数据,反而降低了系统性能反而降低了系统性能。显然,需要。显然,需要确定一个确定一个合理的合理的数据高速缓冲区大小。数据高速缓冲区大小。n通过查询动态性能视图通过查询动态性能视图V$SGA_DYNAMIC_COMPONETS查看数据高速缓查看数据高速缓冲区的构成情况。冲区的构成情况。n使用使用ALTER SYSTEM语句动态修改参数语句动态修改参数DB_CACHE_SIZE(标准块标准块),从而调整数据高速缓冲,从而调整数据高速缓冲区的大小。区的大小。Oracle 10g数据库基础教程
13、2010(2)重做日志缓冲区)重做日志缓冲区p功能n用于用于缓存缓存用户对数据库进行修改操作时生成的用户对数据库进行修改操作时生成的重做记重做记录录。n为了提高工作效率,重做记录并不是直接写入重做日为了提高工作效率,重做记录并不是直接写入重做日志文件中,而是首先被服务器进程写入重做日志缓冲志文件中,而是首先被服务器进程写入重做日志缓冲区中,在一定条件下,再由日志写入进程区中,在一定条件下,再由日志写入进程(LGWR)把重把重做日志缓冲区的内容写入重做日志文件中做永久性保做日志缓冲区的内容写入重做日志文件中做永久性保存。在归档模式下,当重做日志切换时,由归档进程存。在归档模式下,当重做日志切换时
14、,由归档进程(ARCH)将重做日志文件的内容写入归档文件中。将重做日志文件的内容写入归档文件中。Oracle 10g数据库基础教程2010p重做日志缓冲区的工作过程 说明说明:重做日志缓冲区是一个:重做日志缓冲区是一个循环缓冲区循环缓冲区,在使用时从顶端向底端写入数,在使用时从顶端向底端写入数 据,然后返回到缓冲区的起始点循环写入。据,然后返回到缓冲区的起始点循环写入。重做记录重做记录Oracle 10g数据库基础教程2010p重做日志缓冲区的大小n较大的重做日志缓冲区,可以减少对重做日志文件写较大的重做日志缓冲区,可以减少对重做日志文件写的次数,适合长时间运行的、产生大量重做记录的事的次数,
15、适合长时间运行的、产生大量重做记录的事务。务。n使用使用ALTER SYSTEM语句动态修改参数语句动态修改参数LOG_BUFFER,以调整缓冲区大小。,以调整缓冲区大小。Oracle 10g数据库基础教程2010()共享池()共享池p功能n用于缓存用于缓存最近执行过的最近执行过的SQL语句语句、PL/SQL程序程序和和数据数据字典信息字典信息,是对,是对SQL语句、语句、PL/SQL程序程序进行进行语法分析语法分析、编译编译、执行执行的区域。的区域。p组成n库库缓存缓存p用于缓存用于缓存已经解释并执行过的已经解释并执行过的SQL语句和语句和PL/SQL程序代程序代码,以提高码,以提高SQL或
16、或PL/SQL程序的执行效率。程序的执行效率。p包括包括SQL工作区工作区和和PL/SQL工作区工作区共享共享SQL区:存放区:存放SQL语句分析结果和执行计划。语句分析结果和执行计划。私有私有SQL区:包括绑定变量、环境和会话参数等。区:包括绑定变量、环境和会话参数等。Oracle 10g数据库基础教程2010n数据字典数据字典缓存缓存区区p保存最常用的数据字典信息。保存最常用的数据字典信息。p共享池大小 n由由SHARED_POOL_SIZE参数指定。参数指定。n合适的共享池大小,可使编译过的程序代码长驻内存,合适的共享池大小,可使编译过的程序代码长驻内存,大大降低重复执行相同的大大降低重
17、复执行相同的SQL语句、语句、PL/SQL程序的系程序的系统开销,从而提高数据库的性能。统开销,从而提高数据库的性能。Oracle 10g数据库基础教程2010()大型池()大型池 p功能n大型池是一个可选的内存配置项,主要为大型池是一个可选的内存配置项,主要为Oracle多线多线程服务器、服务器程服务器、服务器I/O进程、数据库备份与恢复操作、进程、数据库备份与恢复操作、执行具有大量排序操作的执行具有大量排序操作的SQL语句、执行并行化的数语句、执行并行化的数据库操作等需要大量缓存的操作提供内存空间。据库操作等需要大量缓存的操作提供内存空间。n如果没有在如果没有在SGA区中创建大型池,上述操
18、作所需要的区中创建大型池,上述操作所需要的缓存空间将在共享池或缓存空间将在共享池或PGA中分配,因而影响共享池中分配,因而影响共享池或或PGA的使用效率。的使用效率。p大型池大小nLARGE_POOL_SIZEOracle 10g数据库基础教程2010()()Java池池 p功能nJava提供对提供对Java程序设计的支持,用于存储程序设计的支持,用于存储Java代码、代码、Java语句的语法分析表、语句的语法分析表、Java语句的执行方案和进行语句的执行方案和进行Java程序开发。程序开发。pJava池大小nJAVA_POOL_SIZEn通常不小于通常不小于20M,以便安装,以便安装Java
19、虚拟机虚拟机 Oracle 10g数据库基础教程2010(6)流池)流池 p功能n流池是一个可选的内存配置项,用于对流的支持。流池是一个可选的内存配置项,用于对流的支持。p流池大小nSTREAMS_POOL_SIZE Oracle 10g数据库基础教程20108.2.2 SGA的管理的管理pSGA组件大小调整 nDB_CACHE_SIZEnLOG_BUFFERnSHARED_POOL_SIZEnLARGE_POOL_SIZEnJava_POOL_SIZEn STRAMS_POOL_SIZEnSGA_MAX_SIZEp查询视图V$SGAINFO来查看各组件大小。注意注意:除了:除了SGA_MAX
20、_SIZESGA_MAX_SIZE不能修改不能修改外,外,其他几个参数可以使用其他几个参数可以使用 ALTER SYSTEM ALTER SYSTEM语句进行动态调整。语句进行动态调整。SQL SELECT*FROM V$SGAINFO;Oracle 10g数据库基础教程2010pSGA自动管理 n在在Oracle 10g中,通过设置初始化参数中,通过设置初始化参数SGA_TARGET,可以实现对,可以实现对SGA中的数据高速缓冲区、共享池、大中的数据高速缓冲区、共享池、大型池、型池、Java池和流池的自动管理,即这几个组件的内池和流池的自动管理,即这几个组件的内存调整不需要存调整不需要DBA
21、来干预,系统自动进行调整。来干预,系统自动进行调整。n但是对于但是对于日志缓冲区日志缓冲区、非标准块的数据高速缓冲区非标准块的数据高速缓冲区、保留池保留池、回收池回收池等其他区域的调整还需要等其他区域的调整还需要DBA使用使用ALTER SYSTEM语句语句手动进行手动进行调整。调整。Oracle 10g数据库基础教程2010p设置SGA自动管理的方法n计算参数计算参数SGA_TARGET的大小:的大小:n设置参数设置参数SGA_TARGETp通过通过ALTER SYSTEM语句语句设置参数设置参数SGA_TARGET的值,的值,该值可以是上一步计算出来的结果,也可以是当前该值可以是上一步计算
22、出来的结果,也可以是当前SGA大小与大小与SGA_MAX_SIZE之间的某个值。之间的某个值。n将将SGA中与自动管理相关的组件大小设置为中与自动管理相关的组件大小设置为0:SQL SELECT(SELECT SUM(value)FROM V$SGA)-(SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY)/1024/1024|MB AS SGA_TARGET FROM DUAL;Oracle 10g数据库基础教程2010p如果要取消自动管理,只需将参数SGA_TARGET设置为0即可。SQL ALTER SYSTEM SET SHARED_P
23、OOL_SIZE=0;SQL ALTER SYSTEM SET LARGE_POOL_SIZE=0;SQL ALTER SYSTEM SET Java_POOL_SIZE=0;SQL ALTER SYSTEM SET LARGE_POOL_SIZE=0;SQL ALTER SYSTEM SET STREAMS_POOL_SIZE=0;Oracle 10g数据库基础教程20108.2.3 PGAp功能nPGA是为每一个与是为每一个与Oracle数据库连接的用户保留的内数据库连接的用户保留的内存区,主要存储该连接使用的变量信息和与用户进程存区,主要存储该连接使用的变量信息和与用户进程交换的信息。是
24、交换的信息。是非共享的非共享的,只有服务进程本身才能访,只有服务进程本身才能访问它自己的问它自己的PGA区。区。p组成n由由排序区排序区、会话区会话区、游标区游标区以及以及堆栈区堆栈区组成组成 n排序区主要用于存放排序操作所产生的临时数据,其大小由排序区主要用于存放排序操作所产生的临时数据,其大小由初始化参数初始化参数SORT_AREA_SIZE定义;会话区用于保存用户定义;会话区用于保存用户会话所具有的权限、角色、性能统计信息;游标区用于存放会话所具有的权限、角色、性能统计信息;游标区用于存放执行游标操作时所产生的数据;堆栈区用于保存会话过程中执行游标操作时所产生的数据;堆栈区用于保存会话过
25、程中的绑定变量、会话变量等信息。的绑定变量、会话变量等信息。Oracle 10g数据库基础教程20108.2.4在在OEM中管理数据库实例的内存结构中管理数据库实例的内存结构Oracle 10g数据库基础教程20108.3 Oracle后台进程后台进程pOracle进程概述pOracle后台进程 Oracle 10g数据库基础教程20108.3.1 Oracle进程概述进程概述p进程的概念n进程:是操作系统中一个进程:是操作系统中一个独立的可以调度的独立的可以调度的活动,用活动,用于完成指定的任务。于完成指定的任务。n进程进程与与程序程序的的区别区别在于:在于:p进程是进程是动态的动态的概念,
26、即动态创建,完成任务后立即消亡;概念,即动态创建,完成任务后立即消亡;而程序是一个静态实体。而程序是一个静态实体。p进程进程强调执行过程强调执行过程,而程序仅仅是指令的有序集合。,而程序仅仅是指令的有序集合。p进程的类型n用户进程用户进程n服务器进程服务器进程n后台进程后台进程 Oracle 10g数据库基础教程2010p用户进程 n当用户当用户连接连接数据库数据库执行执行一个应用程序时,会一个应用程序时,会创建创建一个一个用户进程,来完成用户所指定的任务。用户进程,来完成用户所指定的任务。p服务器进程 n服务器进程由服务器进程由Oracle自身创建,用于自身创建,用于处理处理连接到数据库连接
27、到数据库实例的实例的用户进程所提出的请求用户进程所提出的请求。用户进程只有通过服。用户进程只有通过服务器进程才能实现对数据库的访问和操作。务器进程才能实现对数据库的访问和操作。n服务器进程分为服务器进程分为专用专用服务器进程和服务器进程和共享共享服务器进程两服务器进程两种。种。只能为一个只能为一个用户进程用户进程提供服务,即提供服务,即一对一一对一服务。服务。可以为多个可以为多个用户进程用户进程提供服务,即提供服务,即一对多一对多服务。服务。Oracle 10g数据库基础教程2010n服务器进程主要服务器进程主要完成以下任务完成以下任务:p解析并执行解析并执行用户提交的用户提交的SQL语句和语
28、句和PL/SQL程序;程序;p在在SGA的数据高速缓冲区中的数据高速缓冲区中搜索用户进程所要访问的数搜索用户进程所要访问的数据据,如果数据不在缓冲区中,则需要从硬盘数据文件中,如果数据不在缓冲区中,则需要从硬盘数据文件中读取所需的数据,再将它们复制到缓冲区中;读取所需的数据,再将它们复制到缓冲区中;p将用户改变数据库的操作信息写入将用户改变数据库的操作信息写入日志缓冲区中。日志缓冲区中。p将将查询或执行后的结果数据返回查询或执行后的结果数据返回给用户进程。给用户进程。Oracle 10g数据库基础教程2010p后台进程 n作用作用p为了保证为了保证Oracle数据库在任意一个时刻可以数据库在任
29、意一个时刻可以处理多用户处理多用户的并发请求的并发请求,进行复杂的数据操作,而且还要,进行复杂的数据操作,而且还要优化系统优化系统性能性能,Oracle数据库数据库起用了一些相互独立的附加进程起用了一些相互独立的附加进程,称为称为后台进程后台进程。服务器进程在执行用户进程请求时,调。服务器进程在执行用户进程请求时,调用后台进程来实现对数据库的操作。用后台进程来实现对数据库的操作。n主要主要完成以下任务完成以下任务:p在内存与磁盘之间进行在内存与磁盘之间进行I/O操作;操作;p监视各个服务器进程状态;监视各个服务器进程状态;p协调各个服务器进程的任务;协调各个服务器进程的任务;p维护系统性能和可
30、靠性等。维护系统性能和可靠性等。Oracle 10g数据库基础教程20108.3.2 Oracle后台进程后台进程pDBWR 数据库写入进程pLGWR 日志写入进程pCKPT 检查点进程pSMON 系统监控进程pPMON 进程监控进程pARCH 归档进程pRECO 恢复进程pLCKn 封锁进程pDnnn 调度进程pSnnn 共享服务器进程Oracle 10g数据库基础教程2010(1)DBWR(数据库写入进程数据库写入进程)n功能:数据库写入进程负责把数据数据库写入进程负责把数据高速缓冲区中已经被修改过高速缓冲区中已经被修改过的数据(的数据(“脏脏”缓存块)成缓存块)成批写入数据文件中永久保存
31、,批写入数据文件中永久保存,同时使数据高速缓冲区有更同时使数据高速缓冲区有更多的空闲缓存块,保证服务多的空闲缓存块,保证服务器进程将所需要的数据从数器进程将所需要的数据从数据文件读取到数据高速缓冲据文件读取到数据高速缓冲区中,提高缓存命中率。区中,提高缓存命中率。InstanceSGADatabaseBufferCacheDBWnControl filesData files Redo log filesDatabaseOracle 10g数据库基础教程2010p启动DBWR进程的条件:n执行执行INSERT、UPDATE等操作时等操作时,没有足够的空闲没有足够的空闲块块n当检查点发生时,将启
32、动当检查点发生时,将启动DBWR进程进程 n当数据缓存的当数据缓存的LRU列表的长度达到初始化列表的长度达到初始化 DB_BLOCK_WRITE_BATCH指定值的一半时指定值的一半时 n若发生超时若发生超时(大约大约3秒未被启动秒未被启动)注意注意:DBWRDBWR进程进程启动的时间启动的时间与用户与用户提交事务的时间提交事务的时间完全完全无关无关。Oracle 10g数据库基础教程2010LGWR(日志写入进程)(日志写入进程)p功能n日日志志写写入入进进程程负负责责把把重重做做日日志志缓缓冲冲区区的的数数据据写写入入重重做做日日志志文文件件中永久保存。中永久保存。n数数据据写写入入进进程
33、程在在工工作作之之前前,需需要要了了解解日日志志写写入入进进程程是是否否已已经经把把相相关关的的日日志志缓缓冲冲区区中中记记载载的的数数据据写写入入硬硬盘盘中中,如如果果相相关关的的日日志志缓缓冲冲区区中中的的记记录录还还没没有有被被写写入入,DBWR会会通通知知LGWR完完成成相相应应的的工工作作,然然后后DBWR才开始写入才开始写入。InstanceSGADBWnRedo LogBufferControl filesData files Redo log filesLGWRDatabaseOracle 10g数据库基础教程2010p启动LGWR进程的条件:n用户通过用户通过COMMIT语句
34、提交当前事务语句提交当前事务n重做日志缓存被写满三分之一重做日志缓存被写满三分之一nDBWR进程开始将脏缓存块写入数据文件进程开始将脏缓存块写入数据文件n每隔每隔3秒,即发生一次超时,将启动秒,即发生一次超时,将启动LGWR p事务提交机制 n快速快速提交:提交:用户提交用户提交COMMIT语句,语句,提交记录提交记录和和重做重做信息信息都被写入重做日志文件中。都被写入重做日志文件中。n组组提交:一次性将重做日志缓冲区的重做记录写入从提交:一次性将重做日志缓冲区的重做记录写入从左日志文件,不管事务是否提交。左日志文件,不管事务是否提交。Oracle 10g数据库基础教程2010CKPT(检查点
35、进程)(检查点进程)p检查点概念 检查点检查点是一个是一个事件事件,当该事件发生时当该事件发生时(每隔一段时间发每隔一段时间发生生),DBWR进程进程把数据高速缓冲区把数据高速缓冲区中脏缓存块写入数中脏缓存块写入数据文件中,同时据文件中,同时Oracle将对数据库将对数据库控制文件和数据文控制文件和数据文件的头部的同步序件的头部的同步序号进行更新,以记号进行更新,以记录下当前的数据库录下当前的数据库结构和状态,保证结构和状态,保证数据的同步。数据的同步。InstanceSGADWW0Redo LogBufferLGWRInstanceSGADBWnLGWRCKPTControl filesDa
36、ta files Redo log filesOracle 10g数据库基础教程2010pCKPT进程的作用n更新控制文件与数据文件的头部,使其同步;更新控制文件与数据文件的头部,使其同步;n触发触发DBWR进程,将脏缓存块写入数据文件。进程,将脏缓存块写入数据文件。p检查点的级别 n数据库数据库检查点:每一次日志切换时,执行一个数据库检查点,检查点:每一次日志切换时,执行一个数据库检查点,DBWR进程将数据高速缓冲区中的脏缓存块写入数据文件中;进程将数据高速缓冲区中的脏缓存块写入数据文件中;n表空间表空间检查点:当一个表空间设置为脱机状态时,执行一个检查点:当一个表空间设置为脱机状态时,执行
37、一个表空间检查点,表空间检查点,DBWR进程把数据高速缓存中与该表空间相进程把数据高速缓存中与该表空间相关的脏缓存块写入数据文件中。关的脏缓存块写入数据文件中。n时间时间检查点:可以设置以时间为基础的检查点,每隔一段时检查点:可以设置以时间为基础的检查点,每隔一段时间执行一次检查点。需要为检查点设置一个合适的执行间隔,间执行一次检查点。需要为检查点设置一个合适的执行间隔,间隔太短,将会产生过多的硬盘间隔太短,将会产生过多的硬盘I/O操作;间隔太长,数据操作;间隔太长,数据库的恢复将耗费太多时间。库的恢复将耗费太多时间。Oracle 10g数据库基础教程2010p检查点事件的触发n每一个日志切换
38、时每一个日志切换时n当实例以如下方式关闭时当实例以如下方式关闭时pNORMAL、TRANSACTION、IMMEDIATE n当使用当使用 ALTER TABLESPACE OFFLINE NORMAL|READ ONLY|BEGIN BACKUP,作用于,作用于某个数据文件上的检查点发生时某个数据文件上的检查点发生时n设置以时间为基础的检查点事件设置以时间为基础的检查点事件n当数据库管理员需要手工操作时当数据库管理员需要手工操作时pALTER SYSTEM CHECKPOINTOracle 10g数据库基础教程2010p与检查点的相关初始化参数 nLOG_CHECKPOINT_INTERVA
39、Lp用来指定重做日志文件每写多少操作系统块发生一次检用来指定重做日志文件每写多少操作系统块发生一次检查点事件查点事件p例如重做日志文件例如重做日志文件1M,系统操作块为系统操作块为1K:设置此参数设置此参数为为500,则重做日志文件写入,则重做日志文件写入500K时,检查点事件发生时,检查点事件发生nLOG_CHECKPOINT_TIMEOUTp用来指定每隔多长时间发生一次检查点用来指定每隔多长时间发生一次检查点p如如1800,表示每隔,表示每隔1800秒,如果为秒,如果为0,表示此参数无效,表示此参数无效EnLOG_CHECKPOINT_TO_ALERTp用于设置是否将检查点信息记录到警告日
40、志中数用于设置是否将检查点信息记录到警告日志中数Oracle 10g数据库基础教程2010SMON(系统监控进程)(系统监控进程)p功能n在实例启动时负责在实例启动时负责对数据库进行恢复;对数据库进行恢复;n回收不再使用的临回收不再使用的临时空间。时空间。n将各个表空间的空将各个表空间的空闲碎片合并闲碎片合并(表空间表空间的存储参数的存储参数PCTINCREASE不不为为0时时)。InstanceSGASMONControl filesData files Redo log filesInstanceSGASMONDatabaseOracle 10g数据库基础教程2010PMON(进程监控进程
41、)(进程监控进程)p功能n负责恢复失败的用户负责恢复失败的用户进程或服务器进程,进程或服务器进程,并且释放进程所占用并且释放进程所占用的资源;的资源;n清除非正常中断的用清除非正常中断的用户进程留下的孤儿会户进程留下的孤儿会话,回退未提交的事话,回退未提交的事务,释放会话所占用务,释放会话所占用的锁、的锁、SGA、PGA等等资源;资源;n监控调度进程和服务监控调度进程和服务器进程的状态,如果器进程的状态,如果它们失败,则尝试重它们失败,则尝试重新启动它们,并释放新启动它们,并释放它们所占用的各种资它们所占用的各种资源。源。InstanceSGAPMONPGA areaOracle 10g数据库
42、基础教程2010ARCH(归档进程)(归档进程)p功能n归档进程负责在日志切换后将已经写满的重做日志文归档进程负责在日志切换后将已经写满的重做日志文件复制到归档目标中,防止写满的重做日志文件被覆件复制到归档目标中,防止写满的重做日志文件被覆盖。盖。p最多可启动10个归档进程(ARC0 ARC9)Oracle 10g数据库基础教程2010RECO(恢复进程)(恢复进程)p功能nRECO进程负责在分布式数据库环境中自动解决分布式进程负责在分布式数据库环境中自动解决分布式事务的故障。一个节点的事务的故障。一个节点的RECO自动解决所有的悬而未自动解决所有的悬而未决的事务。当一个数据库服务器的决的事务
43、。当一个数据库服务器的RECO后台进程试图后台进程试图建立同一远程服务器的通信,如果该远程服务器不可建立同一远程服务器的通信,如果该远程服务器不可用或者网络连接不能建立时,用或者网络连接不能建立时,RECO自动地在一个时间自动地在一个时间间隔之后再次连接。当且仅当数据库配置为分布式事间隔之后再次连接。当且仅当数据库配置为分布式事务处理,且初始化参数务处理,且初始化参数DISTRIBUTED_TRANSACTIONS的值大于的值大于0时,时,RECO进程才会自动启动。进程才会自动启动。Oracle 10g数据库基础教程2010LCKn(锁进程)(锁进程)p功能nLCKn进程用于进程用于Oracl
44、e并行服务器环境中。在数据库中并行服务器环境中。在数据库中最多可以启动最多可以启动10个个LCKn进程,主要用于实例间的封锁。进程,主要用于实例间的封锁。Oracle 10g数据库基础教程2010Dnnn(调度进程)(调度进程)p功能nDnnn进程是多线程服务器进程是多线程服务器(Multithreaded Server,MTS)的组成部分,以后台进程的形式运行。调度进程的组成部分,以后台进程的形式运行。调度进程接受用户进程请求,将它们放入请求队列中,然后为接受用户进程请求,将它们放入请求队列中,然后为请求队列中的用户进程分配一个服务器进程。最后,请求队列中的用户进程分配一个服务器进程。最后,从响应队列返回数据给用户进程。从响应队列返回数据给用户进程。Oracle 10g数据库基础教程2010SGA(System Global Area)共享共享SQL区区共享池共享池数据库缓冲存储区数据库缓冲存储区日志缓冲区日志缓冲区数据字典数据字典Server ProcessUser ProcessDBWRPMONCKPTLGWRSMONARCHDatafilesControl FilesRedo Log Files归档Oracle 10g数据库基础教程2010总结总结p数据库实例的概念 p实例内存区的组成与功能pSGA的组成、功能及其管理p实例后台进程的分类与功能