Oracle10g数据库性能调优方法研究_第1页
Oracle10g数据库性能调优方法研究_第2页
Oracle10g数据库性能调优方法研究_第3页
Oracle10g数据库性能调优方法研究_第4页
Oracle10g数据库性能调优方法研究_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、内容摘要:数据库系系统的性能能最终了决定数据据库的可用用性和生命命力。大多多数数据库库系统在运运行一段时时间后都会会存在一定定的性能问问题,主要要涉及数据据库硬件、数据库服服务器、数数据库内存存、应用程程序、操作作系统、数数据库参数数等方面。因此,基基于数据库库系统的性性能调整与与优化对于于整个系统统的正常运运行起着至至关重要的的作用。数数据库性能能调整与优优化涉及到到多个层面面,通过统统一规划、系统分析析做出相应应的调整,可可以提高数数据库的稳稳定性和可可用性,保保障系统高高效地运行行,解决系系统瓶颈,节节约系统开开销,具有有良好的应应用价值,同同时也对理理论研究提提供了一定定的方法指指导。

2、基于此,论论文将Orraclee 10gg数据库的的内存分配配、磁盘II/O以及及SQL语语句等方面面的性能调调整与优化化问题作为为主要研究究内容,对对其进行了了深入地分分析和讨论论,给出了了一般情况况下Oraacle数数据库应用用系统的性性能调整策策略及优化化方法。关键词:OOraclle 100g 数据库;体体系结构;系统全局局区;性能能调整与优优化 AbsttracttAbstrract: The pperfoormannce oof daatabaase ssysteems eeventtuallly deetermminess theeir aavaillabillity and s

3、urvvivabbilitty. MMost of tthem willl briing aaboutt somme peerforrmancce prrobleems mmore or lless afteer ruunninng foor a periiod oof tiime, whicch maainlyy invvolvee dattabasse haardwaare, dataabasee serrver, dattabasse meemoryy, apppliccatioons, operratinng syystemms annd daatabaase pparammeterr

4、s, etc. Theerefoore,pperfoormannce ttuninng annd opptimiizatiion oof daatabaase ssysteems,whicch cooncerrn muultipple aaspeccts, are veryy vittal tto thhe noormall runnningg of the wholle syystemm. Wee cann impprovee thee staabiliity aand aavaillabillity of ddatabbase, guaaranttee iits hhigh runnnin

5、g effiicienncy, solvve syystemm botttlenneck, redduce systtem ooverhhead, obttain conssiderrablee appplicaabiliity aand iin thhem mmeanwwhilee, proovidee somme guuidelliness forr theeoretticall ressearcch thhrouggh a uniffied plann andd sysstemaaticaal annalyssis tto maake aapproopriaate aadjusstmen

6、nt.Basedd on the abovve-meentiooned ideaa, thhe paaper prinncipaally payss atttentiion tto thhe reesearrch oon thhe peerforrmancce tuuningg andd opttimizzatioon prrobleems oof meemoryy alllocattion of OOraclle 10g, discc I/OO, SQLL staatemeents, etcc, andd makkes aa furrtherr anaalysiis annd diiscus

7、ss. BBesiddes, it pproviides somee perrformmancee tunning straategiies aand ooptimmizattion apprroachhes oof Orraclee appplicaationn sysstem in ggenerral ccondiitionn. Key WWordss: Oraacle 10g DDatabbase不不Archiitectture不不Systeem Globaal Area不 Adjusstmennt annd Optimmizattion of PPerfoormannce1 导言言网格

8、技术是是本世纪初初最新和最最有吸引力力的技术之之一,数据据库管理系系统作为信信息系统的的基本支撑撑在信息化化建设中扮扮演着重要要的要色。目前的OOraclle 10g数据据库是业界界首个为网网格计算而而设计的数数据库,是是一种高效效率、可靠性好好的适应高高吞吐量的的数据库解解决方案,该该方案可让让客户将多多台标准服服务器系统统整合成一一套可扩充充的容错运运算平台。然而,随着数据据库规模的的扩大及用用户数量的的增加,数数据库应用用系统的响响应速度下下降,性能能问题越来来越突出。Oraclle 10g数据据库系统体体系结构庞庞大、技术术细节繁杂杂,如何合合理有效地地建立基于于Oraccle的数数据

9、库系统统及如何调调整使系统统性能达到到最优,成成为Oraacle数数据库应用用领域的热热点问题。本课题通通过对Orraclee 10g数据据库系统的的深入分析析,设计一一套完整的的Oraccle数据据性能评测测指标和方方法,并针针对发现的的性能问题题制定相应应的性能优优化策略。 2 Orraclee 10g体系系结构Oraclle数据管管理系统是是Oraccle实例例(Insstancce)和Oraccle数据据库构成的的。下面是是Oraccle 10g数据据库的体系系结构图:图1 OOraclle 100g数据库库体系结构构2.1 ORACCLE实例例Oraclle 实例包括括系统全局局共享

10、区SSysteem Glloball Aree 和后台进进程Bacckgroound Proccess。2.1.11 系统全局局共享区SSysteem Glloball Areea(SGA)Systeem Glloball Areea 是一一块巨大的的共享内存存区域,他他被看做是是Oraccle 数数据库的一一个大缓冲冲池,这里里的数据可可以被ORRACLEE的各个进进程共用1。其其大小可以以通过如下下语句查看看:SQL seleect * froom v$sga;NAME VALUUE- -Fixxed SSize 398116Varriablle Siize 225981127844Dat

11、tabasse Buufferrs 1.049EE+09Redo Bufffers 3276680主要包括以以下几个部部分: 共享池(Sharred ppool)共享池是SSGA中最最关键的内内存片段,特特别是在性性能和可伸伸缩性上。一个太小小的共享池池会扼杀性性能,使系系统停止,太太大的共享享池也会有有同样的效效果,将会会消耗大量量的CPUU来管理这这个共享池池。不正确确的使用共共享池只会会带来灾难难。共享池池主要又可可以分为以以下两个部部分:(1)SQQL语句缓缓冲(Librrary Cachhe)当一个用户户提交一个个SQL语语句,Orraclee会将这句句SQL进进行分析(parsse

12、),这这个过程类类似于编译译,会耗费费相对较多多的时间。在分析完完这个SQQL,Orraclee会把他的的分析结果果给保存在在Sharred ppool的的Librrary Cachhe中,当当数据库第第二次执行行该SQLL时,Orraclee自动跳过过这个分析析过程,从从而减少了了系统运行行的时间。这也是为为什么第一一次运行的的SQL 比第二次次运行的SSQL要慢慢一点的原原因。下面举例说说明parrse的时时间SQL seleect ccountt(*) frommscpaass ;COUNTT(*)-243Elapssed: 00:000:000.08这是在Shhare_pooll 和D

13、aata bbuffeer 都没没有数据缓缓冲区的情情况下所用用的时间SQL alteer syystemm fluush SSHAREED_POOOL;Systeem alltereed.清空Shaare_ppool,保保留Datta buufferrSQL seleect ccountt(*) fromm scppass ;COUNTT(*)-243Elapssed: 00:000:000.02SQL seleect ccountt(*) fromm scppass ;COUNTT(*)-243Elapssed: 00:000:000.00从两句SQQL 的时时间差上可可以看出该该SQL

14、的Parrse 时时间约为000:000:00.02。对于保存在在共享池中中的SQLL语句,可可以从V$Sqlttext、v$Sqqlareea中查询询到,对于于编程者来来说,要尽尽量提高语语句的重用用率,减少少语句的分分析时间。一个设计计的差的应应用程序可可以毁掉整整个数据库库的Shaare ppool,提提高SQLL语句的重重用率必须须先养成良良好的变成成习惯,尽尽量使用BBind变变量。(2)数据据字典缓冲冲区(Daata DDictiionarry Caache)显而易见,数数据字典缓缓冲区是OORACLLE特地为为数据字典典准备的一一块缓冲池池,供ORRACLEE内部使用用。 块缓冲

15、区区高速缓存存(Dataabasee Bufffer Cachhe)这些缓冲是是对应所有有数据文件件中的一些些被使用到到的数据块块。让他们们能够在内内存中进行行操作。在在这个级别别里没有系系统文件,户数据文文件,临时时数据文件件,回滚段段文件之分分。也就是是任何文件件的数据块块都有可能能被缓冲。数据库的的任何修改改都在该缓缓冲里完成成,并由DDBWR进进程将修改改后的数据据写入磁盘盘2。这个缓冲区区的块基本本上在两个个不同的列列表中管理理。一个是是块的“脏脏”表(DDirtyy Lisst),需需要用数据据库块的书书写器(DDBWR)来写入,另另外一个是是不脏的块块的列表(Freee Liss

16、t),一一般的情况况下,是使使用最近最最少使用 (Leaast RRecenntly Usedd,LRUU)算法来来管理。块块缓冲区高高速缓存又又可以细分分为以下三三个部分(DDefauult ppool,Keepp poool,Reecyclle poool)。如果不是是人为设置置初始化参参数(Innit.oora),ORACLE将默认为Default pool。由于操作系统寻址能力的限制,不通过特殊设置,在32位的系统上,块缓冲区高速缓存最大可以达到1.7G,在64位系统上,块缓冲区高速缓存最大可以达到10G。 重做日志志缓冲区(Redoo logg bufffer)重做日志文文件的缓冲冲

17、区,对数数据库的任任何修改都都按顺序被被记录在该该缓冲,然然后由LGGWR进程程将它写入入磁盘。这这些修改信信息可能是是DML语语句,如(Inseert,UUpdatte,Deeletee),或DDDL语句句,如(CCreatte,Allter,Dropp等)。 重做日志志缓冲区的的存在是因因为内存到到内存的操操作比较内内存到硬盘盘的速度快快很多,所所以重作日日志缓冲区区可以加快快数据库的的操作速度度,但是考考虑的数据据库的一致致性与可恢恢复性,数数据在重做做日志缓冲冲区中的滞滞留时间不不会很长。所以重作作日志缓冲冲区一般都都很小,大大于3M之后的的重作日志志缓冲区已已经没有太太大的实际际意义

18、。 Javaa程序缓冲冲区(Javaa Poool)Java 的程序区区,Oraacle 8I 以以后,Orraclee 在内核核中加入了了对Javva的支持持。该程序序缓冲区就就是为Jaava 程程序保留的的。如果不不用Javva程序没没有必要改改变该缓冲冲区的默认认大小。 大池(Largge Poool)大池的得名名不是因为为大,而是是因为它用用来分配大大块的内存存,处理比比共享池更更大的内存存,下面对对象使用大大池:MTS在SGAA的Larrge PPool中中分配UGGA。语句的并行行查询(Paraallell Exeecutiion oof Sttatemmentss)允许许进程间消

19、消息缓冲区区的分配,用用来协调并并行查询服服务器。备份(Baackupp)用用于RMAAN磁盘II/O缓存存。2.1.22 后台进进程(Backkgrouund pproceess)后台进程是是Oraccle的程程序,用来来管理数据据库的读写写,恢复和和监视等工工作。Seerverr Proocesss主要是通通过他和uuser proccess进进行联系和和沟通,并并由他和uuser proccess进进行数据的的交换。在在Unixx机器上,Oracle后台进程相对于操作系统进程,也就是说,一个Oracle后台进程将启动一个操作系统进程;在Windows机器上, Oracle后台进程相对于操

20、作系统线程,打开任务管理器,我们只能看到一个ORACLE.EXE的进程,但是通过另外的工具,就可以看到包含在这里进程中的线程。在Unixx上可以通通过如下方方法查看后后台进程:ps eef | grepp oraa_# ps -ef | grrep oora_ | grrep XXCLUAATOraclle 299431 1 0 Sep 0222:02 ora_dbwrr_SIDDOraclle 299444 1 0 Sep 0200:03 ora_ckptt_SIDDOraclle 299448 1 0 Sep 0222:42 ora_smonn_SIDDOraclle 299442 1 0

21、 Sep 0233:25 ora_lgwrr_SIDDOraclle 299427 1 0 Sep 0200:01 ora_pmonn_SIDD Oraccle系统统有5个基本进进程他们是是:DBWR(数据文件件写入进程程)LGWRR(日志文件件写入进程程)SMONN(系统监护护进程)PMONN(用户进程程监护进程程)CKPTT(检查点进进程,同步步数据文件件,日志文件件,控制文件件)(1)DBBWR(Dataabasee Wriiter 数据写写入进程)将数据缓冲冲区的数据据写入数据据文件,是是负责数据据缓冲区管管理的一个个后台进程程。当数据据缓冲区中中的一数据据被修改后后,就标记记为dir

22、rty,DDBWR进进程将数据据缓冲区中中“脏”数据写入入数据文件件,保持数数据缓冲区区的“干净”。由于数据据缓冲区的的数据被用用户修改并并占用,空空闲数据缓缓冲区会不不断减少,当当用户进程程要从磁盘盘读取数据据块到数据据缓冲区却却无法找到到足够的空空闲数据缓缓冲区时,DDBWR将将数据缓冲冲区内容写写入磁盘,使使用户进程程总可以得得到足够的的空闲数据据缓冲区。DBWRR的作用:管理数据据缓冲区,以以便用户进进程总能够够找到足够够的空闲缓缓冲区。将所有修修改后的缓缓冲区数据据写入数据据文件。使用LRRU(最近近最少使用用)算法保保持缓冲区区数据是最最近经常使使用的。通过延迟迟写来优化化磁盘I/

23、O读写。(2)LGGWR(Log Writter 日志写入入进程)将日志数据据从日志缓缓冲区写入入磁盘日志志文件组。数据库在在运行时,如如果对数据据库进行修修改则产生生日志信息息,日志信信息首先产产生于日志志缓冲区。当日志达达到一定数数量时,由由LGWRR将日志数数据写入到到日志文件件组,再经经过日志切切换, 由归档档进程(AARCH)将将日志数据据写入归档档进程(前前提是数据据库运行在在归档模式式下)。数数据库遵循循写日志优优先原则,即即在写数据据之前先写写日志。(3)SMMON工作主要包包含:清除临时空空间在系统启动动时,完成成系统实例例恢复聚结空闲空空间从不可用的的文件中恢恢复事务的的活

24、动OPS中失失败节点的的实例恢复复清除OBJJ$表缩减回滚段段使回滚段脱脱机(4)PMMON主要用于清清除失效的的用户进程程,释放用用户进程所所用的资源源。如PMMON将回回滚未提交交的工作,释释放锁,释释放分配给给失败进程程的SGAA资源。(5)CKKPT同步数据文文件,日志志文件和控控制文件,由由于DBWWR/LGGWR的工工作原理,造造成了数据据文件,日日志文件,控控制文件的的不一至,这这就需要CCKPT进进程来同步步。CKPPT会更新新数据文件件/控制文文件的头信信息。CKPT工工作的主要要条件如下下:a.在日志志切换的时时候。b.数据库库用Immeddiatee ,Transsact

25、iion , Normaal 选项项Shutddown 数据库的的时候。c.根据初初始化文件件LOG_CHECCKPOIINT_IINTERRVAL、LOG_CHECCKPOIINT_TTIMEOOUT、FFAST_STARRT_IOO_TARRGET、的设置数值值来确定。d.用户触触发。 以下进程程的启动需需要手工配配置(1)ARRCH当数据库以以归档方式式运行的时时候,Orraclee会启动AARCH进进程,当重重做日志文文件被写满满时,日志志文件进行行切换,旧旧的重做日日志文件就就被ARCCH进程复复制到一个个/多个特特定的目录录/远程机机器。这些些被复制的的重做日志志文件被叫叫做归档日

26、日志文件。(2)REECO负责解决分分布事物中中的故障。Oraccle可以以连接远程程的多个数数据库,当当由于网络络问题,有有些事物处处于悬而未未决的状态态。RECCO进程试试图建立与与远程服务务器的通信信,当故障障消除后,RRECO进进程自动解解决所有悬悬而未决的的会话。(3)服务务进程Seerverr Proocesss服务进程的的分类:专用服务进进程(Dediicateed Seerverr Proocesss)一个服务进进程对应一一个用户进进程共享服务进进程(MulttiTreeadedd Serrver Proccess)一个服务进进程对应多多个用户进进程,轮流流为用户进进程服务。P

27、GAA & UUGAPGA = Proocesss Gloobal AreaaUGA = Useer Glloball Areea他保存了用用户的变量量、权限、堆栈、排排序空间等等用户信息息,对于专专用服务器器进程,UUGA在PPGA中分分配。对于于多线程进进程,UGGA在Laarge pooll中分配。(4)用户户进程Usser PProceess在客户端,将将用户的SSQL 语语句传递给给服务进程程2.2 ORACCLE 数数据库ORACLLE数据库库的组成物理操操作系统文文件的集合合。主要包包括以下几几种。2.2.11 控制文文件(参数数文件innit.oora记录录了控制文文件的位置置

28、)控制文件包包括如下主主要信息:数据库的的名字,检检查点信息息,数据库库创建的时时间戳,所有的数数据文件,联联机日志文文件,归档档日志文件件信息,备份信息息等。有了这些信信息,Orraclee就知道那那些文件是是数据文件件,现在的的重做日志志文件是哪哪些,这些些都是系统统启动和运运行的基本本条件,所所以他是OOraclle运行的的根本。如如果没有控控制文件系系统是不可可能启动的的。控制文文件是非常常重要的,一一般采用多多个镜相复复制来保护护控制文件件,或采用用RAIDD来保护控控制文件。控制文件件的丢失,将将使数据库库的恢复变变的很复杂杂。控制文文件信息可可以从V$Conttrolfilee中

29、查询获获得。2.2.22 数据文文件(数据据文件的详详细信息记记载在控制制文件中)可以通过如如下方式查查看数据文文件SQL seleect nname fromm v$ddataffile;NAME-/u05/dbf/PRODD/sysstem_01.ddbf/u06/dbf/PRODD/temmp_011.dbff/u04/dbf/PRODD/useers_001.dbbf/u09/dbf/PRODD/rbss_01.dbf/u06/dbf/PRODD/appplsyss_inddx_011.dbff/u05/dbf/PRODD/appplsyss_datta_011.dbff从以上可以以看

30、出,数数据文件大大致可以分分为以下几几类: 2.2.2.1 系统数数据文件(systtem_001.dbbf)存放系统表表和数据字字典,一般般不放用户户的数据,但但是用户脚脚本,如过过程,函数数,包等却却是保存在在数据字典典中的。(数据字典典是一些系系统表或视视图,他存存放系统的的信息,他他包括数据据库版本,数数据文件信信息,表与与索引等段段信息,系系统的运行行状态等各各种和系统统有关的信信息和用户户脚本信息息。数据库库管理员可可以通过对对数据字典典的查询,就就可以了解解到Oraacle的的运行状态态。) 回滚段文文件(rbbs_011.dbff)如果数据库库进行对数数据的修改改,那么就就必须

31、使用用回滚段,回回滚段是用用来临时存存放修改前前的数据(Befoore IImagee)。回滚滚段通常都都放在一个个单独的表表空间上(回回滚表空间间),避免免表空间碎碎片化,这这个表空间间包含的数数据文件就就是回滚数数据文件。 临时数数据文件(tempp_01.dbf)主要存放用用户的排序序等临时数数据,与回回滚段相似似,临时段段也容易引引起表空间间碎片化,而而且没有办办法在一个个永久表空空间上开辟辟临时段,所所以就必须须有一个临临时表空间间,它所包包含的数据据文件就是是临时数据据文件,主主要用于不不能在内存存上进行的的排序操作作。我们必必须为用户户指定一个个临时表空空间。 用户数数据文件(/

32、appplsyss_datta_011.dbff ,appplsyys_inndx_001.dbbf)存放用户数数据,这里里列举了两两类常见的的用户型数数据,一般般数据和索索引数据,一一般来说,如如果条件许许可的话,可可以考虑放放在不同的的磁盘上。2.2.33 重做日日志文件(联联机重做日日志)用户对数据据库进行的的任何操作作都会记录录在重做日日志文件。在了解重重做日志之之前必须了了解重做日日志的两个个概念,重重做日志组组和重做日日志组成员员(Memmber),一个数数据库中至至少要有两两个日志组组文件,一一组写完后后再写另一一组,即轮轮流写。每每个日志组组中至少有有一个日志志成员,一一个日志

33、组组中的多个个日志成员员是镜相关关系,有利利于日志文文件的保护护,因为日日志文件的的损坏,特特别是当前前联机日志志的损坏,对对数据库的的影响是巨巨大的。联机日志组组的交换过过程叫做切切换,需要要特别注意意的是,日日志切换在在一个优化化效果不好好的数据库库中会引起起临时的“挂起”。通过v$log可可以查看日日志组,vv$loggfilee可以查看看具体的成成员文件。2.2.44 归档日日志文件Oraclle可以运运行在两种种模式之中中,归档模模式和不归归档模式4。如如果不用归归档模式,当当然,就不不会有归档档日志,但但是,系统统将不会是是一个实用用系统,特特别是不能能用于生产产系统,因因为此系统

34、统可能会丢丢失数据。但是在归归档模式中中,为了保保存用户的的所有修改改,在重做做日志文件件切换后和和被覆盖之之间系统将将他们另外外保存成一一组连续的的文件系列列,该文件件系列就是是归档日志志文件。有人或许会会说,归档档日志文件件占领了用用户大量的的硬盘空间间,但是具体想想一想,用用户是愿意意浪费一点点磁盘空间间来保护数数据,还是是愿意丢失失数据呢?显而义见见,我们需需要保证我我们的数据据的安全性性。其实,归归档并不是是一直占领领用户的磁盘盘空间,用用户可以把把它备份到磁磁带上,或或则删除上上一次完整整备份前的的所有日志志文件。2.2.55 初始化化参数文件件initSSID.oora或iini

35、t.ora文文件,因为为版本的不不一样,其其位置也可可能会不一一样。初始始化文件记记载了许多多数据库的的启动参数数,如内存存,控制文文件,进程程数等,在在数据库启启动的时候候加载(NNomouunt时加加载),初初始化文件件记录了很很多重要参参数,对数数据库的性性能影响很很大。2.2.66 其他文文件 密码文文件用于OOraclle 的具具有syssdba权权限用户的的认证. 其它日志文文件(1)报警警日志文件件(aleert.llog或aalrt.ora)记录数据库库启动,关关闭和一些些重要的出出错信息。数据库管管理员应该该经常检查查这个文件件,并对出出现的问题题作出即使使的反应。可以通过过

36、以下SQQL 找到到他的路径径selecct vaalue fromm v$PPARAMMETERRwheree namme =backkgrouund_ddump_destt;(2)后台台或用户跟跟踪文件系统进程或或用户进程程出错前写写入的信息息,一般不不可能读懂懂,可以通通过ORAACLE的的TKPRROF工具具转化为可可以读懂的的格式。对对于系统进进程产生的的跟踪文件件与报警日日志文件的的路径一样样,用户跟跟踪文件的的路径,你你可以通过过以下SQQL找到他他的路径selecct vaalue fromm v$PPARAMMETERR wheere nname =usser_ddump_d

37、estt;3 Orraclee数据库常常见的瓶颈颈问题Oraclle 数据据库系统提提供了相应应的应用工工具,管理理人员可以以方便地对对Oraccle进行行有效的管管理。从而而建立一个个良好的环环境,使系系统发挥最最大的效能能5。但但是,有时时用户还是是抱怨系统统运行速度度慢,对用用户查询反反应的时间间长,即出出现所谓的的瓶颈效应应。这就需需要管理人人员对Orraclee进行调整整。在Oraccle系统统中比较常常见的瓶颈颈出现在以以下部件中中:3.1 中央处理理器(CPU)CPU是计计算机在运运行中最重重要的部分分,如果CCPU总是是运行在极极限速度下下,那么我我们说CPPU成为系系统的瓶颈

38、颈,尤其在在多用户同同时使用系系统时,CCPU的计计算能力尤尤为重要。尽管多数数情况下,都都是由操作作系统的内内核来管理理分配有效效的CPUU给RACCLE数据据库进程使使用。但是是,仍然会会出现过多多的应用进进程对CPPU使用周周期激烈竞竞争的现象象。3.2 内存内存是计算算机程序运运行的场所所,处于等等待状态数数据和请求求信息也都都存放在内内存中。如如果内存不不足,caache(高速缓存存区)的命命中率就不不会太高,大大部分所需需数据不在在cachhe中,因因此出现了了瓶颈问题题。3.3 存储设备备诸如硬盘驱驱动器、CCD-ROOM等设备备,用于存存储系统所所需信息,计计算机系统统每秒能处

39、处理的最大大I/O数数量是固定定的,当CCPU和内内存要求的的I/O速速度大于系系统的速率率时,存储储设备的瓶瓶颈就会发发生。3.4 网络当网络负担担太重,网网络部件速速度跟不上上,不可能能把数据传传输得更快快,网络瓶瓶颈就会发发生。3.5 其它由于其它系系统硬件或或软件的原原因而导致致的瓶颈,如如应用系统统本身的设设计问题,超超出系统吞吞吐量(在在一定时间间内系统处处理数据的的能力)的的限制等造造成的瓶颈颈。对于Oraacle数数据库系统统的存在的的瓶颈问题题的解决,其其实最终还还是归结为为数据库性性能优化问问题。实际际上,为了了保证ORRACLEE数据库运运行在最佳佳的性能状状态下,在信息

40、息系统开发发之前就应应该考虑数数据库的优优化策略。优化策略略一般包括括服务器操操作系统参参数调整、ORACCLE数据据库参数调调整、网络络性能调整整、应用程程序SQLL语句分析析及设计等等几个方面面,其中应应用程序的的分析与设设计是在信信息系统开开发之前完完成的。分分析评价OORACLLE数据库库性能主要要有数据库库吞吐量、数据库用用户响应时时间两项指指标6。数据库库吞吐量是是指单位时时间内数据据库完成的的SQL语语句数目:数据库用用户响应时时间是指用用户从提交交SQL语句开始始到获得结结果的那一一段时间。数据库用用户响应时时间又可以以分为系统统服务时间间和用户等等待时间两两项,即:数据库用用

41、户响应时时间=系统统服务时间间 + 用用户等待时时间,上述述公式告诉诉我们,获获得满意的的用户响应应时间有两两个途径:一是减少少系统服务务时间,即即提高数据据库的吞吐吐量:二是减少少用户等待待时间,即即减少用户户访问同一一数据库资资源的冲突突率。4 CPPU参数的的调整CPU是服服务器的一一项重要资资源,服务务器良好的的工作状态态是在工作作高峰时CC使用率在在90%以以上。如果果空闲时间间CPU使使用率就在在90%以以上,说明明服务器缺缺资源,如如果工作高高峰时CPPU使用率率仍然很低低,说明服服务器CPPU资源还还比较富玉玉。使用操操作相同命命令可以看看到CPUU的使用情情况,一般般UNLK

42、K操作系统统的服可以以使用saar一命令令查看CPPU的使用用率,NTT操作系统统的服务器器,可以使使用N能管管理器来查查看CPUU的使用率率。数据库管理理员可以通通过查看vv$syssstatt数据字典典中“CPU usedd by thiis seessioon”统计项得得知ORAACLE数数据库使用用的CPUU时间,查查看“OSS Useer leevel CPU timee”统计项得得知操作系系统用户态态下的CPPU时间,查查看“OSS Sysstem calll CPUU timme”统计项得得知操作系系统系统态态下的CPPU时间,操操作系统总总的CPUU时间就是是用户态和和系统态时

43、时间之和,如如果ORAACLE数数据库使用用的CPUU时间占操操作系统总总的CPUU时间900%以上,说说明服务器器CPU基基本上被OORACLLE数据库库使用着,这这是合理,反反之,说明明服务器CCPU被其其它程序占占用过多,ORACLE数据库无法得到更多的CPU时间。数据库管理员还可以通过查看v$sesstat数据字典来获得当前连接ORACLE数据库各个会话占用的CPU时间,从而得知什么会话耗用服务器CPU比较多7。出现 CPU 资源不足的情况是很多的:SQL语句的重解析、低效率的SQL语句、锁冲突都会引起CPU资源不足。(1)数据据库管理员员可以执行行下述语句句来查看SSQL语句句的解析

44、情情况。SELECCT*FRROM VV$SYSSSTATTWHEREE NAMME INN(parrse ttime cpu , parsse tiime eelapssed , pparsee couunt(hhard);这里 paarse timee cpuu是系统服服务时间,pparsee timme ellapseed是响应应时间,用用户等待时时间waiite ttime = paarse timee elaapsedd - pparsee timme cppu。由此可以以得到用户户SQL语语句平均解解析等待时时间=waaite timee/ paarse counnt。这个平均均等

45、待时间间应该接近近于0,如如果平均解解析等待时时间过长,数数据库管理理员可以通通过下述语语句来发现现是什么SSQL语句句解析效率率比较低。程序员可可以优化这这些语句,或或者增加OORACLLE参数SSESSIION_CCACHEED_CUURSORRS的值。SELECCT SQQL_TEEXT,PPARSEE_CALLLS,EEXECUUTIONNSF RROM VV$SQLLAREAAORDERR BY PARSSE_CAALLS.(2)数据据库管理员员还可以通通过下述语语句查看低低效率的SSQL语句句,优化这这些语句也也有助于提提高CPUU的利用率率。SELECCT BUUFFERR_GE

46、TTS,EXXECUTTIONSS, SQQL_TEEXT FFROM V$SQQLAREEA.(3)数据据库管理员员可以通过过v$syystenn_eveent数据据字典中的的“lattch ffree”统计项查查看ORAACLE数数据库的冲冲突情况,如如果没有冲冲突的话,latch free查询出来没有结果。如果冲突太太大的话,数数据库管理理员可以降降低spiin_coount参参数值,来来消除高的的CPU使使用率。5 内存存参数的调调整内存参数的的调整主要要是指ORRACLEE数据库的的系统全局局区(SGA)的调整。SGA主主要由三部部分构成:共享池、数据缓冲冲区、日志志缓冲区。系统全局

47、局区(Systeem Globbal AArea,SSGA),SGAA随着不同同的环境而而不同,没没有一种普普通的最佳佳方案,我我们在设置置它之前要先先考虑以下下的几个方方面:物理内存存多大;操作系统统是那种及及占多大的的内存,数数据库系统统是文件系系统还是裸裸设备;数据库运运行的模式式8。SSGA包括括:Fixeed siize、VVariaable Bufffers、Redoo Buffferss。SGAA占有物理理内存的比比例没有严严格的规定定,只能遵遵从一般的的规则:SGA占占据物理内内存的400%60%左左右。如果果通过直观观的公式化化来表达则则为:OS使用内内存+SGGA+并发发进

48、程数*(sorrt_areaa_size+Hashh_areea_siize+22M) seleect ssum(vvaluee)/10024/11024 fromm v$ssga;SUM(VVALUEE)/10024/11024- 500此时 SGGA 的当当前总大小小近似为 500MMB,并且且这个值将将变为 SSGA_TTARGEET 的值值。接下来来,执行语语句: alterr sysstem set sga_targget = 5000M sccope=bothh;这种方法不不需要为各各个池设置置不同值;因而,将将需要在参参数文件中中使它们的的值为零或或全部删除除它们。 sharee

49、d_poool_ssize = 0largee_poool_siize = 0java_pooll_sizze = 0db_caache_sizee = 00 再循环数据据库,使这这些值生效效。 这个人工过过程还可以以通过 EEnterrprisse Maanageer 100g 实施施。从数据据库主页中中,选择 Admminisstrattion 选项卡卡,然后选选择 MMemorry Paarameeterss。对于于人工配置置的内存参参数,将显显示标记为为 Ennablee 的按按钮,以及及所有人工工配置的池池的值。单单击 EEnablle 按按钮,启用用自动共享享内存管理理特性。企企业

50、管理器器将完成剩剩下的工作作。 在配置了自自动内存分分配之后,可以以利用以下下命令检查查它们的大大小: SQL seleect ccurreent_ssize fromm v$bbuffeer_poool;CURREENT_SSIZE- 340SQL seleect ppool, summ(byttes)/10244/10224 Mbbytess froom v$sgasstat grouup byy poool;POOL MBYTTES- -java pooll 4largee poool 4shareed poool 1148正如所看到到的,所有有的池都从从 5000MB 的的总目标大大小

51、中自动动进行分配配。如图22所示缓冲冲高速缓存存大小是 340MMB,Jaava 池池是 4MMB,大型型池是 44MB,共共享池是 148MMB。它们们合起来总总的大小为为 (3440+4+4+1448=) 496MMB,近似似与 5000MB 的目标 SGA 的大小相相同。 图 2 池的初初始分配现在假定提提供给Orraclee的主机内内存从 5500MBB 减少为为 3000MB,这这意味着必必须减少总总 SGAA 的大小小。可以通通过减小目目标 SGGA 大小小来反映这这种变化。 alterr sysstem set sga_targget = 3000M sccope=bothh;现

52、在查看各各个池,可可以看到: SQL seleect ccurreent_ssize fromm v$bbuffeer_poool;CURREENT_SSIZE- 244SQL seleect ppool, summ(byttes)/10244/10224 Mbbytess froom v$sgasstat groupp by pooll;POOL MBYTTES- -java pooll 4largee poool 4shareed poool 44占用的总大大小是 2240+44+4+444 = 296MMB,接近近于目标的的 3000MB。如如图 3 所示,当当 SGAA_TARRGET

53、 改变时,如如何自动重重新分配池池。 图 3 在将 SSGA 大大小减少到到 3000MB 之之后重新分分配池这些池的大大小是动态态的。池将将根据工作作负载扩展展,以容纳纳需求的增增长,或缩缩小以容纳纳另一个池池的扩展。这种扩展展或缩小自自动发生,无无需 DBBA 的干干预,这与与本文开头头的示例不不同。让我我们暂时返返回到那个个场景,假假定在初始始分配后,RRMAN 作业启动动,指示需需要一个更更大的大型型池,大型型池将从 4MB 扩展到 40MBB,以容纳纳需求。这这个额外的的 36MMB 将从从数据库缓缓冲中划出出,数据库库块缓冲将将缩小,如如图 4 所示。 图 4 在对大型型池的需求求

54、增长之后后经过重新新分配的池池池的大小变变化基于系系统上的工工作负载,因因此不需要要为最坏的的情况调整整池的大小小它们将将根据需求求的增长自自动调整。此外,SSGA 的的总大小始始终在由 SGA_TARGGET 指指定的最大大值之内,因因此不存在在使内存需需求的增长长比例失调调(这将导导致分页和和交换)的的风险。可可以动态地地将 SGGA_TAARGETT 增加至至绝对最大大值,这个个绝对最大大值是通过过调整参数数 SGAA_MAXX_SIZZE 指定定的。 5.4.22 不受影影响的池SGA 中中的一些池池不受动态态大小调整整的影响,但但是必须显显式指定这这些池111。其其中值得注注意的是非

55、非标准块大大小的缓冲冲池,以及及 KEEEP 池或或 RECCYCLEE 池的非非默认块大大小。如果果数据库有有一个块大大小为 88K,而想想要配置 2K、44K、166K 和 32K 块大小的的池,那么么必须手动动设置它们们。它们的的大小将保保持不变;它们将不不会根据负负载缩小或或扩展。当当使用多种种大小的缓缓冲池、KKEEP 池和 RRECYCCLE 池池时,应当当考虑这个个因素。此此外,日志志缓冲不受受内存调整整的影响不管工工作负载如如何,在参参数 loog_buufferr 中设定定的值是不不变的。( 在 110g 中中,还可以以在 SGGA 中定定义一种新新的池:流流池 (sstre

56、aam poool),它它用参数 streeams_pooll_sizze 进行行设置。该该池也不受受自动内存存调整的影影响。) 这就产生了了一个问题题,如果需需要一个非非默认块大大小的池,而而且想自动动管理其它它的池,那那么该怎么么办? 如果指定了了这些非自自动调整的的参数中的的任意一个个(如 ddb_2kk_cacche_ssize),那那么它们的的总大小将将从 SGGA_TAARGETT 值中减减去,以计计算自动调调整的参数数值,以使使 SGAA 的总大大小保持不不变。例如如,假设值值看起来像像这样。sga_ttargeet = 500MMdb_2kk_cacche_ssize = 50

57、0M其余的池参参数未设置置。50MMB 的 2KB 缓冲池为为自动调整整的池(如如默认块大大小缓冲池池 (dbb_cacche_ssize)、共享池池、Javva 池和和大型池)保保留了 4450MBB。当以一一种方法动动态地调整整不可自动动调整的参参数(如 2KB 块大小池池)这种方方法将影响响到可自动动调整部分分的大小,可可自动调整整的部分将将重新调整整。例如,将将 db_2k_ccachee_sizze 的值值从 500MB 提提高到 1100MBB 只为可可自动调整整的参数剩剩余 4000MB。因此,如如图 5 所示,可调整的的池(如共共享池、大大型池、JJava 池和默认认缓冲池)自

58、自动缩小,以以将它们的的总大小从从 4500MB 减减少到 4400MBB。图 5 配置非自自动缓冲参参数的效果果但如果有足足够的可用用内存,或或者上述风风险可能不不是那么明明显,那应应该怎么办办?如果这这样的话,可可以通过不不指定参数数文件中的的参数 SSGA_TTARGEET、通过过在文件中中将其设为为 0,或或者通过使使用 ALLTER SYSTTEM 动动态地将其其修改为 0 来关关闭自动大大小调整。当 SGGA_TAARGETT 被设为为 0 时时,池的当当前值被自自动设为它它们的参数数。 5.4.33 使用 Enteerpriise MManagger 还可以使用用 Entterp

59、rrise Manaager 10g 来来处理这些些参数。从从数据库主主页中单击击超链接 Memmory Paraameteers,如图 6 所示。 图 6 在 Ennterpprisee Mannagerr 中调整整自动共享享内存管理理注意红圈中中的项目:数据库在在 Auttomattic SShareed Meemoryy Mannagemment 模式下运运行,总大大小为 5564MBB,与在参参数 SGGA_TAARGETT 中指定定的值相同同。可以在在此修改它它,然后单单击Appply按钮钮接受这些些值,可调整的的参数将自自动调整。 为每个个池指定一一个最小值值,假定将 SGA_TA

60、RGGET 设设为 6000MB,并并且各个池池已自动分分配。表1 各各个池的最最小值池大小(MBB)缓冲池404Java 池4大型池4共享池148看上述值,可能推断断 4MBB 的 JJava 池和大型型池可能有有点不足,这个值在运行时无疑需要增加。因此,可能想确保这些池至少在最初时具有更高的值,比如说,分别为 8MB 和 16MB。可以通过在参数文件中显式地指定这些池的值或动态使用 ALTER SYSTEM 来实现这一目的(如下所示)。 alterr sysstem set largge_poool_ssize = 166M;alterr sysstem set javaa_poool_s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论