Oracle10g数据库性能调优方法研究.docx
《Oracle10g数据库性能调优方法研究.docx》由会员分享,可在线阅读,更多相关《Oracle10g数据库性能调优方法研究.docx(58页珍藏版)》请在课桌文档上搜索。
1、内容摘要:数据库系统的性能最终了决定数据库的可用性和生命力。大多数数据库系统在运行段时间后都会存在一定的性能问题,主要涉及数据库硬件、数据库效劳器、数据库内存:、应用程序、操作系统、数据库参数等方面.因此,基丁数据库系统的性能调整与优化对于整个系统的正常运行起着至关重要的作用。数据库性能调想与优化涉及到多个层面,通过统一规划、系统分析做出相应的调整,可以提高数据库的稳定性和可用性,保障系统高效地运行,解决系统瓶预,节约系统开销,具仃良好的应用价值,同时也对理论研究提供了定的方法指导。基于此,论文将OraCIeIOg数据库的内存分配、磁盘I/O以及SQ1.语句等方面的性能调整与优化问题作为主要研
2、究内容,射其进行了深入地分析和讨论,绐出了一般情况下OraC1.e数据库应用系统的性能调整策略及优化方法。关键词:OraCICIOg数据库:体系结构;系统全局区;性能调整与优化Abstract:Theperformanceofdatabasesystemseventua1.Iydeterminestheiravai1.abi1.ityandSurvivabi1.ity.Mostofthemwi1.1.bringaboutsomePerfOrmanCeprob1.emsmoreor1.essafterrunningforaperiodoftime,whichmain1.yinvo1.vedata
3、basehardware,databaseserver,databasememory,app1.ications,operatingsystemsanddatabaseparameters,etc.Therefore.perConnanceIUningantioptimizationofse1.ect*frov$sga:NAMEVA1.UEFixedSize39816Variab1.eSize259812784DatabaseBuffers1.049EH9RedoBuffers327680主要包括以下几个局部:2.1.1.1共享池(SharCdpoo1.)我享池是SGA中最关键的内存片段,特别
4、是在性能和可伸缩性上。一个大小的共享池会扼杀性能,使系统停止,大大的共享池也会有同样的效果,将会消耗大量的CPU来管理这个共享池.不正确的使用共享池只会带来灾难。共享池主要又可以分为以下两个局部:(1)SQ1.语句缓冲(1.ibraryCaehe)当一个用户提交一个SQ1.语句,OraC1.C会将这句SQ1.进行分析(parse),这个过程类似于煽译,会消耗相对较多的时间。在分析完这个SQ1.Orac1.e会把他的分析结果给保存在Sharedpoo1.的1.ibrarycaehe中,当数据库第二次执行该SQ1.时,OraCIe自动跳过这个分析过程.从而减少了系统运行的时间。这也是为什么第一次运
5、行的SQ1.比第二次运行的SQ1.要慢一点的原因。下面举例说明ParSe的时间SQ1.se1.ectcount(*)fromscpass;COUNT()243E1.apsed:00:00:00,08这是在Sharepoo1.和Databuffer都没有数据缓冲区的情况下所用的时间SQ1.a1.tersystemf1.ushSHAREDPOO1.;Systema1.tered.清空Share_POo1,保存DatabUfferSQ1.se1.ectcount()fromscpass;COUNT()243E1.apsed:00:00:00,02SQ1.se1.ectcount(*)fromscpa
6、ss;COUNT()243E1.apsed:00:00:00,00从两句SQ1.的时间差上可以看出该SQ1.的ParSe时间约为00:00:00.02。对于保存在共享池中的SQ1.语句,可以从V$Sq1.IeXI、V$5q1.area中查询到,对于编程者来说,要尽量提高语句的重用率,减少语句的分析时间.一个设计的差的应用程序可以毁掉整个数据库的Sharepoo1.,提高SQ1.语句的重用率必须先养成良好的变成习惯,尽量使用Bind变量。(2)数据字典缓冲区(DaIaDictionaryCache)显而易见,数据字典蟆冲区是ORAC1.E特地为数据字典准备的一块缓冲池,供ORAC1.E内部使用。
7、2.1.1.2块缓冲区高速缓存(DatabaSeBufferCache)这些缓冲是对应所有数据文件中的一些被使用到的数据块。让他们能够在内存中进行操作.在这个级别里没有系统文件,户数据文件,临时数据文件,回滚段文件之分。也就是任何文件的数据块都有可能被缓冲。数据库的任何修改都在该缓冲里完成,并由【)1WR进程将修改后的数据写入俄盘上这个缓冲区的块根本上在两个不同的列表中管理。一个是块的“腔”表(Dirty1.ist),需要用数据库块的书写器BWR)来写入,另外一个是不胜的块的列表(Free1.ist),一段的情况下,是使用最近最少使用(1.eaStReCent1.yUsed,1.RU)算法来管
8、理。块馈冲区高速缓存又可以细分为以下三个局部(Defau1.tp1.,Keeppoo1.Recyc1.epoo1.)如果不是人为设置初始化参数(IniI.ora),ORAC1.E将默认为DefaUI1.poo1.:由于操作系统寻址能力的限制,不通过特殊设置,在32位的系统上,块缓冲区高速缓存最大可以到达1.7G,在64位系统上,块缓冲区商速缓存最大可以到达10G.2.1.1.3重做日志缓冲区(Redo1.ogbuffer)重做日志文件的谖冲区,时数据库的任何修改都按顺序祓记录在该谖冲,然后由1.GWR迸程将它写入磁盘。这些修改信息可能是DM1.语句,如(InSert,Update,De1.et
9、e),或DD1.语句,如(Create,A1.ter,Drop等)。重做日志缓冲区的存在是因为内存到内存的操作比较内存到硬盘的速度快很多,所以重作日志缓冲区可以加快数据库的操作速度,但是考虑的数据库的一致性与可恢熨性,数裾在京做日志馈冲区中的滞苗时间不会很长。所以更作日志媛冲区一般都很小,大于3M之后的重作日志缓冲区已经没有太大的实际意义。2. 1.1.4JaVa程序缓冲区(JaVaPOODJava的程序区,OraCIe81以后,OraCIe在内核中参加了对JaVa的支持。该程序媛冲区就是为JaVa程序保存的。如果不用JaYa程序没有必要改变该缓冲区的默认大小。3. 1,1.5大池(1.arg
10、ePooD大池的得名不是因为大,而是因为它用来分纪大块的内存,处理比共享池更大的内存,下面对象使用大池: MTS在SGA的1.argePoo1.中分配UGAe 谙旬的并行查询(ParaI1.e1.ExecutionofStatements)允许进程间消息缓冲区的分配,用来协调并行查询效劳器。 备份(Backup)用于RMAN磁盘I/0缓存。2.1.2后台进程(BaCkgrOUndPrOCeSS)后台进程是OraCIe的程序,用来管理数据库的读写,恢复和监视等工作。ServerProcess要是通过他和userprocess进行联系和沟通,并由他和userprocess遂行数据的交换。在Unix
11、机器上,OraeIe后台进程相对于操作系统进程,也就是说,一个OraCIe后台进程将启动一个操作系统进程:在WindOWS机器上,OraCIe后台进程相对于操作系统线程,翻开任务管理器,我们只能看到一个ORAC1.E.EXE的进程,但是通过另外的工具,就可以看到包含在这里进程中的歧程。在UniX上可以通过如下方法查看后台进程:PS-CfIgrepora_Wps-efgreporaOrac1.eOrac1.eOrac1.eOrac1.eOrac1.e2943112941412944812944212942710Sep0Sep0Sep0Sep0SepgrepXCUJAT022:02ora_dbwr
12、_SID020:03ora_ckpt_S!D022:42ora_sinon_SID023:25ora1.gwr_SID020:01ora_prnon_SID2. 1.2.1OraeIe系烧有5个根本进程他们是:DBWR(数据文件写入进程)1.GWR(日志文件写入进程)SMON(系统监护进程)PMON(用户进程城护进程)CKPT(检查点进程,同步数据文件,日志文件,控制文件)(1) 1)DBIR(DatabaseWriter数据写入进程)将数据谡冲区的数据写入数据文件,是负责数据馈冲区管理的一个后台进程。当数据媛冲区中的一数据被修改后,就标记为dirty,DBWR进程将数据缓冲区中ST数据写入数
13、据文件,保持数裾媛冲区的“干净”。由于数据馒冲区的数据被用户修改并占用,空闲数裾媛冲区会不断减少,当用户迸程要从横盘读取数据块到数据缓冲区却无法找到足够的空闲数据缓冲区时,DBWR将数据缓冲区内容写入横盘,使用户进程总可以得到足镑的空闲数据慢冲区。DBWR的作用: 管理数据谖冲区,以便用户进程总能够找到足够的空闲线冲区。 将所有修改后的缓冲区数据写入数据文件。 使用1.RU(最近最少使用)算法保持馒冲区数弯是最近经常使用的。 通过延迟写来优化磁盘1/0读写。(2) 1.GWR(1.ogWriter日志写入进程)将日志数据从日志缓冲区写入俄盘日志文件组。数据库在运行时,如果时数据库进行修改则产生
14、日志信息,日志信息首先产生于日志馈冲区。当日志到达一定数量时,由1.GWR将日志数据写入到日志文件沮,再经过日志切换,由归档进程(ARQD将日志数据写入归档进程(前提是数据库运行在归档模式下)。数据库遵循写日志优先原则.即在写数据之前先写日志。(3) SMON工作主要包含: 去除格时空间 在系统启动时,完成系统实例恢复 聚结空闲空间 从不可用的文件中恢曳事务的活动 OPS中失败节点的实例恢宴 去除OBJ$表 缩减回谈段 使回滚段脱机(4) PMON主要用千去除失败的用户透程,释放用户进程所用的资源。如ON将回濠未提交的工作,释放锁,择放分配给失败进程的SGA资源。(5) CKPT同步数据文件,
15、日志文件和控制文件,由于DBWR/1.GWR的工作原理,造成了数据文件,日志文件,控制文件的不一至,这就需要CKPT进程来同步。CKPT会更新数据文件/控制文件的头信息。CKPT工作的主要条件如下:a在日志切换的时候。b.数据库用IinmediateBransaction,Noraa1.选项ShUtdOWn数据库的时候。c.根据初始化文件1.oGHECKP0INTNTERYA1.、1.OG_CHECKIP1.NTjriMEOUJFASTSTARTIOTARGET.的设置数值来确定。d.用户触发。2.1.2.2以下进程的启动需要手工配置(1)AKCH当数据库以归档方式运行的时候,Orac1.e会
16、启动RRCH进程,当重做日志文件被写满时,日志文件进行切揍,旧的重做日志文件就被ARCH进程发制到一个/多个特定的目录/远程机器。这些被复制的重做日志文件被叫做归档日志文件。(2)RECO负责解决分布事物中的故障。OraCIe可以连接远程的多个数据库.当由于网络问题,有些,物处于悬而未决的状态。RECO进程试图建立与远程效劳器的通信,当故障消除后,RECO进程自动解决所有悬而未决的会话。(3)效劳进程SerVerProcess效劳进程的分类:a)专用效劳进程(DediCa1.edServerProcess)b)一个效劳进程对应一个用户进程c)共享效劳进程(YUItiTreadedServerP
17、rocess)d)一个效劳进程对应多个用户进程,轮流为用户进程效劳。PGA&UGAPGA=ProcessG1.oba1.AreaUGA=UserG1.oba1.Area他保存了用户的变量、权限、堆栈、排序空间等用户信息,对于专用效劳器进程,I:GA在PGA中分配。对于多线程迸程,UGA在1.argepoo1.中分配。(4)用户进程USerPrOCeSS在客户端,将闻户的SQ1.语句传递给效劳进程2.2ORAC1.E数据库ORAC1.E数据库的组成物理操作系统文件的集合。主要包括以下几种。2.2.1控制文件(参数文件iniiera记录了控制文件的位置)控制文件包括如下主要信息:敕猾库的名字,检查
18、点信息,数据库创立的时间戳,所有的数据文件,联机日志文件,归档日志文件信息,备份信息等。有了这些信息,Orac1.e就知道那些文件是数据文件,现在的重做日志文件是哪些,这些都是系统启动和运行的根本条件,所以他是OraCIe运行的根本。如果没有控制文件系统是不可能启动的控制文件是非常重要的,一般采用多个镜相复制来保护控制文件,或采用RAn)来保护控制文件。控制文件的丧失,将使数据库的恢复变的很复杂。控制文件信息可以从5ControIfiIe中查询获得。2. 2.2数据文件(数据文件的详细信息记载在控制文件中)可以通过如下方式查看数据文件SQ1.se1.ectnamefromvdatafi1.e;
19、NAMEuO5dbfPRODsyste_01.dbfu06dbf/PRODZtemp01.dbfu04dbf/PRODZusers_01.dbfu09dbt7PRODrbs01.dbfu06dbf/PRODZapp1.sys_in(ix_01.dbfu05dbt7PR0Dapp1sysdata01.dbf从以上可以看出,数据文件大致可以分为以下几类:2.2. 2.1系统数据文件(SyStei1.o1.dbf)存放系统表和数据字典,一般不放用户的数据,但是用户脚本,如过程.函数,包等却是保存在数据字典中的。(数据字典是一些系统表或视图,他存放系统的信息,他包括数据库版本,数据文件信息,表与索引等
20、段信息,系统的运行状态等各种和系统有关的信息和用户脚本信息。数据库管理员可以通过时数据字典的查询,就可以了解到OraC1.e的运行状态。)2.2.2.2回床段文件(rbs_O1.dbf)如果数据库进行时数据的修改,那么就必须使用回滚段,回滚段是用来临时存放修改前的数据(BeforeImage),回球段通常都放在一个单独的表空间上(回京表空间),防止表空间碎片化,这个表空间包含的数据文件就是回演数据文件。2.2.2.3临时数据文件(IemP_O1.dbr)主要存放用户的排序等整时数相,与回谖段相似,临时段也容易引起表空间碎片化,而且没有方法在一个永久表空间上开辟临时段,所以就必须有一个临时表空间
21、,它所包含的数据文件就是临时数据文件,主要用千不能在内存上进行的排序操作。我们必须为用户指定一个临时表空间。2.2.2.4用户数据文件(/app1.sys_data_01.dbf,app1.sys_indx_01.dbf)存放用户数据,这里列举了两类常见的用户型数据,一般数据和索引数据,一般来说,如果条件许可的话,可以考虑放在不同的横盘上。2.2.3重做日志文件(联机重做日志)用户对数据库进行的任何操作都会记录在重做日志文件。在了解重做日志之前必须了解重做日志的两个就念,重做日志组和重做日志组成员Nember),1.个数据库中至少要有两个日志组文件,一组写完后再写另一组,即轮流写。每个日志组中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle10g 数据库 性能 方法 研究
链接地址:https://www.desk33.com/p-1684542.html