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