Oracle数据库系统维护(初级)

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

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

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

资源描述

Oracle数据库系统维护培训(初级)管理数据库的可用性规划和建立数据库管理数据库的物理结构基于数据库设计管理存储空间安全管理网络管理备份恢复性能调整数据库管理员的任务体系结构图示共享池数据缓冲区日志缓冲区SGA数据文件日志文件参数文件控制文件DBWRARCHCKPTLGWRPMONLCKnRECOSMON存储介质ServerUserUserUser实例(INSTANCE)是存取和控制数据库的软件机制,它由系统全局区(SystemGlobalArea,简称SGA)和后台进程组成。工作方式PMONSMONDBWRLGWR内存数据文件日志文件实例和SID的关系是什么?SID就是Oracle实例的标识,不同的SID对应不同的内存缓冲(SGA)和不同的后台进程。Oracle数据库和实例的关系是什么?单节点数据库多节点数据库ORACLE内存管理ORACLE的内存结构(SGA)RedologbufferDatabuffercacheSharedpoolDatadict.cacheLibrarycacheSGASGA是ORACLE系统为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。LargepoolJavapool共享池(sharepool)大小由SHARED_POOL_SIZE定义库缓冲包含语句文本,编译后的代码以及执行计划等字典缓冲包括表和列的定义和权限等共享池库缓冲字典缓冲库缓冲(Librarycache)库缓冲保存最近用过的SQL语句和PLSQL使用过程中的下列信息:•语句文本•分析树,即编译后的语句•执行计划,即优化器定义的语句执行步骤库缓冲又称为共享SQL区。由于库缓冲保存了这些信息,所以当一查询在执行计划被换出之前重新执行时,服务进程不必重新分析语句,因此库缓冲能改善应用的性能。.数据字典缓冲(DataDictionaryCache)•数据字典缓冲又叫做字典缓冲或行缓冲,是共享池的一部分。•它保存最近使用过的数据字典信息如表和列的定义,用户名口令和权限。•在分析阶段,服务进程查找缓冲中的信息以解释语句中指定的对象名并验证访问权限。如有必要服务进程可请求从数据文件中装入这些信息数据库数据缓冲区(DatabaseBufferCache)•在oracle8i中,使用参数DB_BLOCK_SIZE确定数据块的大小;使用参数DB_BLOCK_BUFFERS确定数据块的数目;Databuffer的大小由DB_BLOCK_SIZE*DB_BLOCK_BUFFERS来决定;•在oracle9i中,使用DB_CACHE_SIZE来决定,并且可以通过下面的命令动态的改变其大小:ALTERSYSTEMSETDB_CACHE_SIZE=120M;•处理查询时,服务进程在数据库缓冲区中寻找所需的数据块。如果在缓冲区中找不到所需数据块,服务进程从数据文件中将数据块读入缓冲区。以后对同样数据块的请求在内存中进行,不需物理读写。•缓冲区用LRU(LeastRecentlyUsed)置换算法,在检查点发生时由DBWR写入数据文件写数据文件数据缓冲区数据文件Oracle根据最近最少被使用(LRU)列表将数据从缓冲区的数据写入数据文件中。Oracle服务器使用延迟、多个块写以减缓磁盘I/O的冲突:•灰数据缓冲区的数量达到阈值;•当进行扫描而无法找到任何空闲缓冲区时进程扫描了指定数量的块;•出现超时每三秒;•出现检查点(检查点是使数据库缓冲区高速缓存与数据文件同步的一种方法)日志缓冲区(LogBuffer)重做日志缓冲区用于在内存中存储未被刷新写入联机重做日志文件的重做信息。它是循环使用的缓冲区,这意味着从顶端到底端填充信息,然后又返回到缓冲区的起始点。当重做日志缓冲区填满时,将它的内容写入联机重做日志文件。重做日志缓冲区的大小是由LOG_BUFFER初始化参数决定,以字节为单位,决定在内存中保留多少空间缓存重做日志项。所有服务进程(SERVERPROCESS)将重作记录写入重作日志缓冲在事务提交时由LGWR写入日志文件一次磁盘写可能包含不同事物的重作记录写日志文件日志缓冲区日志文件LGWR执行写入操作的条件是:•发生提交(commit)•到达其使用极限•重做日志缓冲区满度达到三分之一或3秒•在DBW0将数据库缓冲区高速缓存中修改的块写入数据文件以前•写满1M因此,太大的redologbuffer是没有意义的,因为真正用于生产的时候,很少有3秒内没有提交事物的应用,而且,每到1M就会写redologfile,所以,大多数情况下,超过3M的redologbuffer几乎就浪费了。Java池•Oracle8i引入的一项新特性(从8.1.5版本后开始出现的),用于支持数据库中java的运行,负责容纳与会话有关的Java代码,以及要由Java虚拟机(JVM)用到的一些数据。•她的大小由初始化参数文件中的java_pool_size指定大缓冲池(Largepool)这个内存结构最早是在Oracle8.0引入的,它在以下情况使用:•使用MTS配置时,因为要在SGA中分配UGA来保持用户的会话,就是用Large_pool来保持这个会话内存•在执行并行处理语句(如并行查询)的时候,要分配进程间消息缓冲区的内存,就是用这个内存结构来协调并行处理。•使用RMAN做备份的时候,要使用Large_pool这个内存结构来做磁盘I/O缓存器。程序全局区(PGA)PGA服务进程•程序全局区(PGA)是一块内存区域,它包含一个服务进程或后台进程的数据和控制信息,PGA又称为进程全局区(processglobalarea)即一个进程独占的区域,不能共享也不可写。•它包含排序区:用于在结果返回用户之前所需的排序会话信息:如此会话的用户特权等信息光标状态:指出当前会话所用的各个光标所处的状态堆栈空间:包含会话的变量•进程私有空间,其他进程不能访问•PGA在进程创建时分配,进程终止时释放•在MTS模式下,部分结构存储在SGA区中ORACLE9i内存管理的新特性•允许动态改变SGA的大小•9i还引入了自动优化(selftuning)这个特性,这可以使Oracle根据SQL语句的执行情况动态改变私有内存的大小。•增加了一些新的参数,如:SGA_MAX_SIZEDB_CACHE_SIZEDB_KEEP_CACHE_SIZEDB_RECYCLE_POOL_SIZE•PGA被逻辑的划分成两个部分:可调整部分:如cursors,bindvariables等等地sql工作区内存结构;不可调整部分:如sortareas,mergeareas等等;有一些新的方法可以用来监视PGA的使用,如:SELECTSUM(PGA_USED_MEM),SUM(PGA_ALLOC_MEM),SUM(PGA_MAX_MEM)FROMV$PROCESS;续SGANF•如果SGA小于128M,granule大小为4M;如果SGA大于128M,granule大小为16M。BufferCache的不同组件以granule为最小单位增长或收缩。•最小的SGA配置是3个granule,一个用于固定SGA(包括redobuffers),一个用于buffercache,一个用于sharedpool.•可以通过altersystem命令动态修改buffercache内存:altersystemsetdb_cache_size=96M;如:SQLaltersystemsetshared_pool_size=25M;Systemaltered设置SGA_MAX_SIZE时的注意事项•在Windows平台上,Oracle只获得需要的内存(实际的SGA大小),随着物理SGA的变化(管理员发出altersystemsetshared_pool_size=new_size等),Oracle动态获得/释放内存。•在Unix平台上,由于采用了共享内存的结构,Oracle是在启动时就获得那些共享内存段。如果你的SGA开的比SGA_MAX_SIZE小的话,OS的虚拟内存管理会自动把不用的内存放在SWAP空间里面的。•SGA_MAX_SIZE设置的太大或者太小都不合适,设置太大在某些平台(如sun)有可能造成操作系统的页交换,设置太小对性能等使用造成不便。关于SGA的总结•设置之前首先要明确oracle是64bitor32bit。windows上存在32bit的限制,32bit通常SGA有1.7G的限制(某些OS的处理或者WINDOWS上有特定设定可以突破这种限制)。•shared_pool_size过大就可能增加管理负担和latch等资源的开销,不利于提高系统的性能,如果设置太小,也会降低系统的性能。一般的要根据实际情况的命中率(如statpack等工具分析)具体分析(一般系统有几十兆或者百兆左右就够了,类似ERP这种大应用系统可以设置到超过百兆),•log_buffer一般不超过3M(这个LGWR地工作方式,以及ORACLE对logbugger的使用方式有关)。•large_pool_size:如果不设置MTS,通常在RMAN、OPQ会使用到,但是在10M-50M应该差不多了。•java_pool_size:若不使用java,默认得就可以了(20m-33m)。•databuffer:在8i中,databuffer=(db_block_size*db_block_buffers);在9i中可以是db_cache_size。并不是越大越好,需要根据命中率调整。•sort_area_size这个参数在非MTS下都是属于PGA,不属于SGA,是为每个session单独分配的。ORACLE进程管理Oracle服务器服务器应用/网络服务器用户Oracle服务器连接数据库用户客户服务器ServerprocessOracleserverUserprocess服务进程在ORACLESERVER所在的机器上运行在专用服务配置中只对一个用户进程服务使用不同的PGA处理由客户产生的请求,并将结果返回客户查询的处理过程:•分析SQL命令并生成执行方案。•从数据缓冲存储区中读取数据。•将执行结果返回给用户。28后台进程SGADBWRCKPTLGWRARCHRECOLCKnSMONSharedPoolDatabaseBufferCacheRedoLogBufferPMONLMD0LMONDBFilesLogFilesArchiveLogsRemoteDBClusteredInstancesGMSnetworksharedmemorydiskIO29进程监视进程(PMON)•清除异常终止的连接,并撤消异常中断的用户进程,并释放该进程已获得的系统资源或锁。•回滚未提交的事务•释放分配给终止进程的SGA资源•重新启动失败的共享服务进程,分配进程和任务队列进程•它有规律的被唤醒(metalinknote53711.996说是3秒),也可由其他进程调用(如OS进程)。SMON:SystemMonitor•在CLUSTER中的接点失败时自动恢复实例•回收不再使用的临时段空间•合并连续的空闲空间•其他任务.注意:SMON仅在当创建表空间或表时的缺省存储参数—pctincrease不是0时,合并表空间中的自由空间。如果想让SMON自动地处理这个操作,至少将pctincrease设置为1。LGWR:LogWriterLGWR将重做日志缓冲区的重做日志条目写入到联机重做日志文件的进程。注意:直到Oracle在LGWR完成将重做信息从重做缓冲区刷新到联机重做日志文件之后,Oracle才认为一个事务已完成。在LGWR成功地将重做日志项写入联机重做文件时(并不是改变数据文件中的数据时),将一个成功码返回给服务器进程。写日志文件•当提交事务处理时(Commit)•当重做日志缓冲区的三分之一已满时•当重做日志缓冲区中记录了超过1MB的更改时•在DBWR将数据库缓冲区高速缓存中修改的块写入数据文件以前•

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

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

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

×
保存成功