北京邮电大学软件工程研究生的课程---数据库设计开发-42

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2ORACLE数据库实例管理•Oracle服务器就是数据库管理系统(DBMS),由数据库(Oracledatabase)和实例(Oracleinstance)组成。•实例是一系列复杂的内存结构和操作系统进程,它为Oracle客户提供所期望的不同程度的服务。一个实例只能打开一个数据库,或者说一个数据库被唯一的一个实例装载。4.2.1实例组成4.2.2实例创建4.2.3监控实例北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1ORACLE数据库实例组成•实例中每一个进程都有各自的一个内存块,该内存块用于保存私有变量、地址堆栈和其他运行时的信息。•进程间使用公共共享区并在公共共享区内完成它们的工作。公共共享区是能够在同一时间内被不同程序和不同进程读写的一块内存区。该内存块称为系统全局区(SGA)。因为SGA驻留在一个共享内存段中,所以它经常被称作共享全局区。•后台进程就像数据库的手,是直接处理数据库的组件;SGA就像大脑,在必要时间接地调度手处理它们的信息与存储检索。SGA参与发生在数据库中全部的信息和服务器的处理。•单用户的Oracle配置(PersonalOracleLite),不使用多进程执行数据库的功能。相反,所有的数据库功能由一个Oracle进程完成。由于这个原因,单用户也称为单进程Oracle。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1ORACLE数据库实例组成•ORACLE实例是指有自己的内存结构和相关的服务器进程及后台进程的DBMS。4.2.1.1内存结构4.2.1.2进程实例SGASharedpoolDatabaseBuffercacheRedologBuffercacheLibrarycacheDataDictionarycachePMONSMONDBWRLGWRCKPTOthers内存结构后台进程用户进程服务器进程PGA北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.1ORACLE內存结构•ORACLE的内存结构主要有两个内存区域组成:SGA(SystemGlobalArea):系统全局区,是ORACLE实例的基础,是一个共享区域,存放最近使用的SQL语句、最近使用的数据、最近使用的数据字典等信息,供各个进程调用。PGA(ProgramGlobalArea):程序全局区,该区域是一非共享区域,存放会话、排序、游标、主变量等信息,被服务器进程调用,保证谁的请求处理结果给谁,谁的排序给谁,用户声明的、打开的、使用的、关闭的游标是私有的,用户的主变量不被其他用户干扰。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.1ORACLE內存结构•系统全局区:系统全局区是实例的主要部分。它含有数据维护、SQL语句分析与重做缓存所必须的所有内存结构。•系统全局区的数据是共享的,也就是说,多个进程可以在同一时间对SGA中的数据进行访问和修改。所有数据库操作都使用包含在SGA中某点上的结构。•当实例被创建时,分配SGA;当实例关闭时,释放SGA。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.1ORACLE內存结构•SGA组成如下:–共享池。–数据库缓冲区高速缓存。–重做日志缓冲区。另外oracle9i还有Javapool,8i有Java虚拟机,解释Java;Javapool是利用数据库技术解释Java.oracle9i的SGA可以通过SGA_MAX_SIZE被动态的设置大小,8i不能动态设置。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.1ORACLE內存结构–共享池:共享池包括库高速缓存、数据字典高速缓存和服务器控制结构(例如数据库字符集)。参见下图库高速缓冲字典高速缓冲控制结构共享SQL区专用SQL区永久区运行区北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.1ORACLE內存结构–共享池:库高速缓存存储已提交给RDBMS的SQL语句文本、分析过的格式与执行计划,以及已被执行的PL/SQL包头与过程等。数据字典高速缓存存储用于分析SQL语句的数据字典行。Oracle服务器用库高速缓存来提高执行SQL语句的性能。当一条SQL语句提交时,服务器首先查找高速缓存,查看相同的语句是否已被提交或缓存过。如果有,Oracle使用存储的语法分析树和执行路径来执行该语句,使用存储代码可以获得明显的性能提高。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.1ORACLE內存结构–共享池:对于使用以前缓存的SQL语句,它必须在所有方面都与缓存版本完全相同,包括标点符号和字母的大小写。库高速缓存包括共享和专用SQL区。共享SQL区包括SQL语句语法分析树和执行路径;专用SQL区存储特定的会话信息,一个用户会话能够一次打开的专用SQL区的数量由init.ora参数OPEN_CURSORS决定。库高速缓存中的专用SQL区可更进一步分为永久区和运行区。永久区中包含合法的信息,并可应用于SQL语句的多个执行中,而运行区中仅包含正在被执行的SQL语句的数据。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.1ORACLE內存结构–共享池:字典高速缓存含有RDBMS引擎分析SQL语句所使用的数据字典信息。在这个区域中含有段信息、安全性、访问权限和在可用的自由存储空间等信息。共享池的大小取决于init.ora文件参数SHARED_POOL_SIZE,它是以字节为单位的。ORACLE9i可以通过ALTERSYSTEMSETSHARED_POOL_SIZE动态设置。共享区经过长期装卸和卸载数据对象会产生许多碎片,如果在共享池中没有足够的连续空间用来装载目标数据,会产生错误。这个问题可以通过运行SQL命令ALTERSYSTEMFLUSHSHARED_POOL解决。但是如果在数据库操作时,经常遇到共享池错误,就必须增大共享池。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.1ORACLE內存结构–数据库缓冲区高速缓存:是影响整个数据库系统运行的重要因素之一。数据库缓冲区高速缓存是由与Oracle块相同大小的内存块组成。所有Oracle操作的数据在使用前被装入到数据库缓冲区高速缓存中。数据的更新在内存块中完成。Oracle根据最近最少被使用(LRU)列表将数据清出缓冲区高速缓存。LRU列表记录数据块被访问的频繁程度。当服务器在缓冲区中需要更多空间来从磁盘读入一个数据块时,它去访问LRU列表,以确定可以清出哪些块,使用这种方法,保证最频繁使用的块保存在内存中。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.1ORACLE內存结构–数据库缓冲区高速缓存:被修改过的缓冲块称为脏的,脏列表记录所有在内存中被修改而又尚未写入磁盘中的数据。当Oracle接收到修改数据的请求时,对高速缓存中的块进行数据修改,同时写入重做日志中,然后该块被放入脏的列表中,对这些数据的随后访问从高速缓存中读取改变的数据的新的值。Oracle服务器对更新的一块数据,并不立即更新数据文件中的数据。RDBMS等到一定条件时才将改变的数据刷新写入数据文件(参见数据库写入进程)。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.1ORACLE內存结构–数据库缓冲区高速缓存:DB_BLOCK_SIZE和DB_BLOCK_BUFFERS是决定缓冲区高速缓存大小的两个初始化参数。DB_BLOCK_SIZE设置Oracle块大小,DB_BLOCK_BUFFERS决定分配给缓冲区高速缓存的块的数量。两参数相乘就可得出缓冲区高速缓存的内存总数(以字节为单位)。ORACLE9i可以通过ALTERSYSTEMSETDB_CACHE_SIZE动态设置。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.1ORACLE內存结构–重做日志缓冲区:重做日志缓冲区用于在内存中存储未被刷新写入联机重做日志文件的重做信息。它是循环使用的缓冲区,当重做日志缓冲区填满时,将它的内容写入联机重做日志文件。重做日志缓冲区的大小是由LOG_BUFFER初始化参数决定,以字节为单位,决定在内存中保留多少空间缓存重做日志项。如果这个值设置得过低,进程之间相互竞争,LGWR进程读出和写入缓存,有可能会导致性能问题。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.1ORACLE內存结构–重做日志缓冲区:为强迫重做日志顺序写入,Oracle服务器使用闩控制对缓存的访问。闩是一个Oracle进程对一个内存结构的锁定,一个进程必须持有重做分配闩,才能写入重做日志缓冲区。当一个进程持有分配闩时,其他任何进程都不能使用这个分配闩写入重做日志缓冲区。Oracle服务器使用LOG_SMALL_ENTRY_MAX_SIZE初始化参数限制一次写入的重做的总量。这个参数以字节为单位,其缺省值随操作系统和硬件不同而不同。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.1ORACLE內存结构–重做日志缓冲区:对具有多个CPU的服务器而言,Oracle服务器不允许使用重做分配闩所书写的重做日志项所需空间比参数LOG_SMALL_ENTRY_MAX_SIZE大。相反,进程必须持有一个重做复制闩。可获得的重做复制闩的数量等于LOG_SIMULTANEOUS_COPIES初始化参数的值。LOG_SIMULTANEOUS_COPIES的缺省值是系统中CPU的数量。使用重做复制闩,多个进程能同时写入重做日志缓冲区。可以使用V$LATCH动态性能视图监控重做分配闩与重做复制闩。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.2ORACLE进程•ORACLE进程可以理解为一系列执行一定任务、提供不同服务信息的程序。主要有用户进程、服务器进程、后台进程三种类型。•用户进程:当客户机向ORACLE服务器发出一个连接请求时,就产生一个用户进程。数据库用户操纵数据前,首先要建立一个与数据库服务器的连接(可通过Oracle工具,如SQL*Plus),连接的同时产生用户进程,用户进程并不直接作用于ORACLE服务器,而是与一个服务器进程进行通信。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.2ORACLE进程•用户进程:每个用户进程被分配一部分内存区,称为进程全局区(PGA)。当一个用户进程通过专用服务器方式连接数据库时,用户的会话数据、堆栈空间和游标状态信息存储在进程全局区中。用户的会话数据包括安全和资源使用信息;堆栈空间含有为用户会话指定的本地变量;游标状态区包括运行时的游标信息、返回的行和游标返回的代码。如果用户进程通过共享服务器进程方式进行连接,游标和会话信息被存储在系统全局区(SGA)中。尽管对整个数据库而言,这并不增加对内存空间的要求,但是它需要一个更大的系统全局区来存放这些附加的会话信息。北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义OracleServer4.2.1.2ORACLE进程•服务器进程:服务器进程接受用户发出的请求,并根据请求与数据库通信,通过这些通信完成用户进程对数据库中数据的处理要求,同时完成对数据库的连接操作和I/O访问。SGASharedpoolDatabaseBufferRedologBuffer用户进程服务器进程数据库用户建立连接建立会话北京邮电大学软件学院郭文明2003.06《数据库设计与开发》讲义4.2.1.2ORACLE进程•Oracle后台进程:在任意瞬间,Oracle数据库可以处理许多行信息、处理几百个同步用户请求、进行复杂的数据操作,与此同时提供最高水平的性能和数据的完整性。为了完成这些任务,Or

1 / 63
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功