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

下载本文档

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

文档简介

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

2、研究内容,对其进行了深入地分析和讨论,给出了一般情况下Oracle数据库应用系统的性能调整策略及优化方法。关键词:Oraacle 110g 数据库;体系系结构;系统统全局区;性性能调整与优优化 AbstraactAbstracct: The peerformmance of daatabasse sysstems eventtuallyy deteerminees theeir avvailabbilityy and surviivabillity. Most of thhem wiill brring aabout some perfoormancce prooblemss moree or

3、 lless aafter runniing foor a pperiodd of ttime, whichh mainnly innvolvee dataabase hardwware, databbase sserverr, dattabasee memoory, aappliccationns, operratingg systtems aand daatabasse parrameteers, etc. Thereefore,perfoormancce tunning aand opptimizzationn of ddatabaase syystemss,whichh conccer

4、n mmultipple asspectss, are very vitall to tthe noormal runniing off the wholee systtem. WWe cann imprrove tthe sttabiliity annd avaailabiility of daatabasse, guarranteee its high runniing effficieency, solvee systtem boottlenneck, reducce sysstem ooverheead, obtaain coonsideerablee appllicabiility

5、and iin theem meaanwhille, provvide ssome gguidellines for ttheoreeticall reseearch throuugh a unifiied pllan annd sysstemattical analyysis tto makke apppropriiate aadjusttment.Based oon thee abovve-menntioneed ideea, thhe papper prrincippally pays attenntion to thhe ressearchh on tthe peerformmance

6、 tuninng andd optiimizattion pprobleems off memoory alllocattion oof Oraacle 10g, ddisc II/O, SQL stateementss, etc, and makess a fuurtherr anallysis and ddiscusss. Beesidess, it pproviddes soome peerformmance tuninng strrategiies annd opttimizaation approoachess of OOraclee appllicatiion syystem in

7、 geenerall condditionn. Key Worrds: Oraccle 10g Databbase不Archittecturre不Systemm Globall Area不 Adjusttment and OOptimiizatioon of Perforrmancee1 导言网格技术是本世世纪初最新和和最有吸引力力的技术之一一,数据库管管理系统作为为信息系统的的基本支撑在在信息化建设设中扮演着重重要的要色。目目前的Oraacle 10g数据库库是业界首个个为网格计算算而设计的数数据库,是一一种高效率、可靠性好的的适应高吞吐吐量的数据库库解决方案,该该方案可让客客户将多台标标准

8、服务器系系统整合成一一套可扩充的的容错运算平平台。然而,随着数据库库规模的扩大大及用户数量量的增加,数数据库应用系系统的响应速速度下降,性性能问题越来来越突出。Oracle 10g数据库库系统体系结结构庞大、技技术细节繁杂杂,如何合理理有效地建立立基于Oraacle的数数据库系统及及如何调整使使系统性能达达到最优,成成为Oraccle数据库库应用领域的的热点问题。本本课题通过对对Oraclle 10g数据库库系统的深入入分析,设计计一套完整的的Oraclle数据性能能评测指标和和方法,并针针对发现的性性能问题制定定相应的性能能优化策略。 2 Oraccle 10g体系结结构Oracle数数据管

9、理系统统是Oraccle实例(Insstancee)和Oraclle数据库构成的的。下面是Oraacle 10g数据库库的体系结构构图:图1 Oraacle 110g数据库库体系结构2.1 ORRACLE实实例Oracle 实例包括系系统全局共享享区Systtem Gllobal Are 和后台进程程Backggroundd Proccess。2.1.1 系统全局共共享区Sysstem GGloball Areaa(SGA)System Globaal Areea 是一块块巨大的共享享内存区域,他他被看做是OOraclee 数据库的的一个大缓冲冲池,这里的的数据可以被被ORACLLE的各个进进

10、程共用11。其大小小可以通过如如下语句查看看:SQL seelect * froom v$ssga;NAME VAALUE- -Fixedd Sizee 398116Variaable SSize 22598122784Databbase BBufferrs 1.0049E+009Redo Buufferss 3276680主要包括以下几几个部分:1 共享池池(Shareed poool)共享池是SGAA中最关键的的内存片段,特特别是在性能能和可伸缩性性上。一个太太小的共享池池会扼杀性能能,使系统停停止,太大的的共享池也会会有同样的效效果,将会消消耗大量的CCPU来管理理这个共享池池。不正确的

11、的使用共享池池只会带来灾灾难。共享池池主要又可以以分为以下两两个部分:(1)SQL语语句缓冲(Libraary Caache)当一个用户提交交一个SQLL语句,Orracle会会将这句SQQL进行分析析(parsse),这个个过程类似于于编译,会耗耗费相对较多多的时间。在在分析完这个个SQL,OOraclee会把他的分分析结果给保保存在Shaared ppool的LLibrarry Cacche中,当当数据库第二二次执行该SSQL时,OOraclee自动跳过这这个分析过程程,从而减少少了系统运行行的时间。这这也是为什么么第一次运行行的SQL 比第二次运运行的SQLL要慢一点的的原因。下面举例说

12、明pparse的的时间SQL seelect countt(*) ffromsccpass ;COUNT(*)-243Elapsedd: 00:00:000.08这是在Sharre_poool 和Daata buuffer 都没有数据据缓冲区的情情况下所用的的时间SQL allter ssystemm flussh SHAARED_PPOOL;System alterred.清空Sharee_pooll,保留Daata buufferSQL seelect countt(*) ffrom sscpasss ;COUNT(*)-243Elapsedd: 00:00:000.02SQL seele

13、ct countt(*) ffrom sscpasss ;COUNT(*)-243Elapsedd: 00:00:000.00从两句SQL 的时间差上上可以看出该该SQL 的的Parsee 时间约为为00:000:00.002。对于保存在共享享池中的SQQL语句,可可以从V$SSqltexxt、v$SSqlareea中查询到到,对于编程程者来说,要要尽量提高语语句的重用率率,减少语句句的分析时间间。一个设计计的差的应用用程序可以毁毁掉整个数据据库的Shaare poool,提高高SQL语句句的重用率必必须先养成良良好的变成习习惯,尽量使使用Bindd变量。(2)数据字典典缓冲区(DData D

14、Dictioonary Cachee)显而易见,数据据字典缓冲区区是ORACCLE特地为为数据字典准准备的一块缓缓冲池,供OORACLEE内部使用。 2 块缓冲冲区高速缓存存(Databbase BBufferr Cachhe)这些缓冲是对应应所有数据文文件中的一些些被使用到的的数据块。让让他们能够在在内存中进行行操作。在这这个级别里没没有系统文件件,户数据文件件,临时数据据文件,回滚滚段文件之分分。也就是任任何文件的数数据块都有可可能被缓冲。数数据库的任何何修改都在该该缓冲里完成成,并由DBBWR进程将将修改后的数数据写入磁盘盘2。这个缓冲区的块块基本上在两两个不同的列列表中管理。一一个是块

15、的“脏脏”表(Diirty LList),需需要用数据库库块的书写器器(DBWRR)来写入,另另外一个是不不脏的块的列列表(Freee Lisst),一般般的情况下,是是使用最近最最少使用 (Leastt Receently Used,LRU)算算法来管理。块块缓冲区高速速缓存又可以以细分为以下下三个部分(DDefaullt poool,Keeep poool,Reccycle pool)。如如果不是人为为设置初始化化参数(Innit.orra),ORRACLE将将默认为Deefaultt pooll。由于操作作系统寻址能能力的限制,不不通过特殊设设置,在322位的系统上上,块缓冲区区高速缓存

16、最最大可以达到到1.7G,在在64位系统统上,块缓冲冲区高速缓存存最大可以达达到10G。3 重做日日志缓冲区(Redo log bbufferr)重做日志文件的的缓冲区,对对数据库的任任何修改都按按顺序被记录录在该缓冲,然然后由LGWWR进程将它它写入磁盘。这这些修改信息息可能是DMML语句,如如(Inseert,Uppdate,Delette),或DDDL语句,如如(Creaate,Allter,DDrop等)。 重做日日志缓冲区的的存在是因为为内存到内存存的操作比较较内存到硬盘盘的速度快很很多,所以重重作日志缓冲冲区可以加快快数据库的操操作速度,但但是考虑的数数据库的一致致性与可恢复复性,

17、数据在在重做日志缓缓冲区中的滞滞留时间不会会很长。所以以重作日志缓缓冲区一般都都很小,大于于3M之后的重重作日志缓冲冲区已经没有有太大的实际际意义。4 Javva程序缓冲冲区(Java Pool)Java 的程程序区,Orracle 8I 以后后,Oraccle 在内内核中加入了了对Javaa的支持。该该程序缓冲区区就是为Jaava 程序序保留的。如如果不用Jaava程序没没有必要改变变该缓冲区的的默认大小。5 大池(Largee Pooll)大池的得名不是是因为大,而而是因为它用用来分配大块块的内存,处处理比共享池池更大的内存存,下面对象象使用大池:MTS在SSGA的Laarge PPool

18、中分分配UGA。语句的并行查询询(Paralllel EExecuttion oof Staatemennts)允许进进程间消息缓缓冲区的分配配,用来协调调并行查询服服务器。备份(Backkup)用于RMAAN磁盘I/O缓存。2.1.2 后台进程(Backggroundd proccess)后台进程是Orracle的的程序,用来来管理数据库库的读写,恢恢复和监视等等工作。Seerver Proceess主要是是通过他和uuser pprocesss进行联系系和沟通,并并由他和usser prrocesss进行数据的的交换。在UUnix机器器上,Oraacle后台台进程相对于于操作系统进进程,也

19、就是是说,一个OOraclee后台进程将将启动一个操操作系统进程程;在Winndows机机器上, OOraclee后台进程相相对于操作系系统线程,打打开任务管理理器,我们只只能看到一个个ORACLLE.EXEE的进程,但但是通过另外外的工具,就就可以看到包包含在这里进进程中的线程程。在Unix上可可以通过如下下方法查看后后台进程:ps ef | greep oraa_# ps -eef | ggrep oora_ | grepp XCLUUATOracle 294311 1 0 Sep 0022:002 oraa_dbwrr_SIDOracle 294444 1 0 Sep 0020:003

20、oraa_ckptt_SIDOracle 294488 1 0 Sep 0022:442 oraa_smonn_SIDOracle 294422 1 0 Sep 0023:225 oraa_lgwrr_SIDOracle 294277 1 0 Sep 0020:001 oraa_pmonn_SID1 Oraacle系统统有5个基本进程程他们是:DBWR(数据据文件写入进进程)LGWR(日日志文件写入入进程)SMON(系系统监护进程程)PMON(用用户进程监护护进程)CKPT(检检查点进程,同步数据文文件,日志文件,控制文件)(1)DBWRR(Databbase WWriterr 数据写入入进程

21、)将数据缓冲区的的数据写入数数据文件,是是负责数据缓缓冲区管理的的一个后台进进程。当数据据缓冲区中的的一数据被修修改后,就标标记为dirrty,DBBWR进程将将数据缓冲区区中“脏”数据写入数数据文件,保保持数据缓冲冲区的“干净”。由于数据缓缓冲区的数据据被用户修改改并占用,空空闲数据缓冲冲区会不断减减少,当用户户进程要从磁磁盘读取数据据块到数据缓缓冲区却无法法找到足够的的空闲数据缓缓冲区时,DDBWR将数数据缓冲区内内容写入磁盘盘,使用户进进程总可以得得到足够的空空闲数据缓冲冲区。DBWWR的作用:管理数据缓冲冲区,以便用用户进程总能能够找到足够够的空闲缓冲冲区。将所有修改后后的缓冲区数数据

22、写入数据据文件。使用LRU(最最近最少使用用)算法保持持缓冲区数据据是最近经常常使用的。通过延迟写来来优化磁盘II/O读写。(2)LGWRR(Log WWriterr 日志写入进进程)将日志数据从日日志缓冲区写写入磁盘日志志文件组。数数据库在运行行时,如果对对数据库进行行修改则产生生日志信息,日日志信息首先先产生于日志志缓冲区。当当日志达到一一定数量时,由由LGWR将日志数据据写入到日志志文件组,再再经过日志切切换, 由归档进进程(ARCCH)将日志志数据写入归归档进程(前前提是数据库库运行在归档档模式下)。数数据库遵循写写日志优先原原则,即在写写数据之前先先写日志。(3)SMONN工作主要包

23、含:清除临时空间在系统启动时,完完成系统实例例恢复聚结空闲空间从不可用的文件件中恢复事务务的活动OPS中失败节节点的实例恢恢复清除OBJ$表表缩减回滚段使回滚段脱机(4)PMONN主要用于清除失失效的用户进进程,释放用用户进程所用用的资源。如如PMON将将回滚未提交交的工作,释释放锁,释放放分配给失败败进程的SGGA资源。(5)CKPTT同步数据文件,日日志文件和控控制文件,由由于DBWRR/LGWRR的工作原理理,造成了数数据文件,日日志文件,控控制文件的不不一至,这就就需要CKPPT进程来同同步。CKPPT会更新数数据文件/控控制文件的头头信息。CKPT工作的的主要条件如如下:a.在日志切

24、换换的时候。b.数据库用IImmediiate ,Transaactionn , Normall 选项Shutdoown 数据据库的时候。c.根据初始化化文件LOGG_CHECCKPOINNT_INTTERVALL、LOG_CCHECKPPOINT_TIMEOOUT、FAAST_STTART_IIO_TARRGET、的设置数值来来确定。d.用户触发。2 以下进进程的启动需需要手工配置置(1)ARCHH当数据库以归档档方式运行的的时候,Orracle会会启动ARCCH进程,当当重做日志文文件被写满时时,日志文件件进行切换,旧旧的重做日志志文件就被AARCH进程程复制到一个个/多个特定定的目录/远

25、远程机器。这这些被复制的的重做日志文文件被叫做归归档日志文件件。(2)RECOO负责解决分布事事物中的故障障。Oraccle可以连连接远程的多多个数据库,当当由于网络问问题,有些事事物处于悬而而未决的状态态。RECOO进程试图建建立与远程服服务器的通信信,当故障消消除后,REECO进程自自动解决所有有悬而未决的的会话。(3)服务进程程Serveer Proocess服务进程的分类类:专用服务进程(Dediccated Serveer Proocess)一个服务进程对对应一个用户户进程共享服务进程(MultiiTreadded Seerver Proceess)一个服务进程对对应多个用户户进程,

26、轮流流为用户进程程服务。PGA & UGAPGA = PProcesss Gloobal AAreaUGA = UUser GGloball Areaa他保存了用户的的变量、权限限、堆栈、排排序空间等用用户信息,对对于专用服务务器进程,UUGA在PGGA中分配。对对于多线程进进程,UGAA在Largge poool中分配。(4)用户进程程User Proceess在客户端,将用用户的SQLL 语句传递递给服务进程程2.2 ORRACLE 数据库ORACLE数数据库的组成成物理操操作系统文件件的集合。主主要包括以下下几种。2.2.1 控制文件(参参数文件innit.orra记录了控控制文件的位位

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

28、如下方方式查看数据据文件SQL seelect name from v$dattafilee;NAME-/u05/dbbf/PROOD/sysstem_001.dbff/u06/dbbf/PROOD/temmp_01.dbf/u04/dbbf/PROOD/useers_011.dbf/u09/dbbf/PROOD/rbss_01.ddbf/u06/dbbf/PROOD/appplsys_indx_01.dbbf/u05/dbbf/PROOD/appplsys_data_01.dbbf从以上可以看出出,数据文件件大致可以分分为以下几类类: 2.2.2.1 系统统数据文件(systeem_01.d

29、bf)存放系统表和数数据字典,一一般不放用户户的数据,但但是用户脚本本,如过程,函函数,包等却却是保存在数数据字典中的的。(数据字典是是一些系统表表或视图,他他存放系统的的信息,他包包括数据库版版本,数据文文件信息,表表与索引等段段信息,系统统的运行状态态等各种和系系统有关的信信息和用户脚脚本信息。数数据库管理员员可以通过对对数据字典的的查询,就可可以了解到OOraclee的运行状态态。)2 回滚段文件件(rbs_01.dbbf)如果数据库进行行对数据的修修改,那么就就必须使用回回滚段,回滚滚段是用来临临时存放修改改前的数据(Beforre Imaage)。回回滚段通常都都放在一个单单独的表空

30、间间上(回滚表表空间),避避免表空间碎碎片化,这个个表空间包含含的数据文件件就是回滚数数据文件。3 临时数据据文件(teemp_011.dbf)主要存放用户的的排序等临时时数据,与回回滚段相似,临临时段也容易易引起表空间间碎片化,而而且没有办法法在一个永久久表空间上开开辟临时段,所所以就必须有有一个临时表表空间,它所所包含的数据据文件就是临临时数据文件件,主要用于于不能在内存存上进行的排排序操作。我我们必须为用用户指定一个个临时表空间间。4 用户数据据文件(/aapplsyys_datta_01.dbf ,applssys_inndx_011.dbf)存放用户数据,这这里列举了两两类常见的用用

31、户型数据,一一般数据和索索引数据,一一般来说,如如果条件许可可的话,可以以考虑放在不不同的磁盘上上。2.2.3 重做日志文文件(联机重重做日志)用户对数据库进进行的任何操操作都会记录录在重做日志志文件。在了了解重做日志志之前必须了了解重做日志志的两个概念念,重做日志志组和重做日日志组成员(Membeer),一个个数据库中至至少要有两个个日志组文件件,一组写完完后再写另一一组,即轮流流写。每个日日志组中至少少有一个日志志成员,一个个日志组中的的多个日志成成员是镜相关关系,有利于于日志文件的的保护,因为为日志文件的的损坏,特别别是当前联机机日志的损坏坏,对数据库库的影响是巨巨大的。联机日志组的交交

32、换过程叫做做切换,需要要特别注意的的是,日志切切换在一个优优化效果不好好的数据库中中会引起临时时的“挂起”。通过v$log可以查看日志组,v$logfile可以查看具体的成员文件。2.2.4 归档日志文文件Oracle可可以运行在两两种模式之中中,归档模式式和不归档模模式4。如果果不用归档模模式,当然,就不会有归档日志,但是,系统将不会是一个实用系统,特别是不能用于生产系统,因为此系统可能会丢失数据。但是在归档模式中,为了保存用户的所有修改,在重做日志文件切换后和被覆盖之间系统将他们另外保存成一组连续的文件系列,该文件系列就是归档日志文件。有人或许会说,归归档日志文件件占领了用户户大量的硬盘盘

33、空间,但是是具体想一想想,用户是愿意浪浪费一点磁盘盘空间来保护护数据,还是是愿意丢失数数据呢?显而而义见,我们们需要保证我我们的数据的的安全性。其其实,归档并并不是一直占占领用户的磁盘空空间,用户可以把它备份到磁带带上,或则删删除上一次完完整备份前的的所有日志文文件。2.2.5 初始化参数数文件initSIDD.ora或或init.ora文件件,因为版本本的不一样,其其位置也可能能会不一样。初初始化文件记记载了许多数数据库的启动动参数,如内内存,控制文文件,进程数数等,在数据据库启动的时时候加载(NNomounnt时加载),初初始化文件记记录了很多重重要参数,对对数据库的性性能影响很大大。2.

34、2.6 其他文件1 密码文件件用于Oraacle 的的具有syssdba权限限用户的认证证.2 其它日志文件件(1)报警日志志文件(allert.llog或allrt.orra)记录数据库启动动,关闭和一一些重要的出出错信息。数数据库管理员员应该经常检检查这个文件件,并对出现现的问题作出出即使的反应应。可以通过过以下SQLL 找到他的的路径select valuee fromm v$PAARAMETTERwhere nname =backkgrounnd_dummp_desst;(2)后台或用用户跟踪文件件系统进程或用户户进程出错前前写入的信息息,一般不可可能读懂,可可以通过ORRACLE的的

35、TKPROOF工具转化化为可以读懂懂的格式。对对于系统进程程产生的跟踪踪文件与报警警日志文件的的路径一样,用用户跟踪文件件的路径,你你可以通过以以下SQL找找到他的路径径select valuee fromm v$PAARAMETTER whhere nname =userr_dumpp_destt;3 Oraccle数据库库常见的瓶颈颈问题Oracle 数据库系统统提供了相应应的应用工具具,管理人员员可以方便地地对Oraccle进行有有效的管理。从从而建立一个个良好的环境境,使系统发发挥最大的效效能5。但是是,有时用户户还是抱怨系系统运行速度度慢,对用户户查询反应的的时间长,即即出现所谓的的

36、瓶颈效应。这这就需要管理理人员对Orracle进进行调整。在Oraclee系统中比较较常见的瓶颈颈出现在以下下部件中:3.1 中央央处理器(CPU)CPU是计算机机在运行中最最重要的部分分,如果CPPU总是运行行在极限速度度下,那么我我们说CPUU成为系统的的瓶颈,尤其其在多用户同同时使用系统统时,CPUU的计算能力力尤为重要。尽尽管多数情况况下,都是由由操作系统的的内核来管理理分配有效的的CPU给RRACLE数数据库进程使使用。但是,仍仍然会出现过过多的应用进进程对CPUU使用周期激激烈竞争的现现象。3.2 内存存内存是计算机程程序运行的场场所,处于等等待状态数据据和请求信息息也都存放在在内

37、存中。如如果内存不足足,cachhe(高速缓缓存区)的命命中率就不会会太高,大部部分所需数据据不在cacche中,因因此出现了瓶瓶颈问题。3.3 存储储设备诸如硬盘驱动器器、CD-RROM等设备备,用于存储储系统所需信信息,计算机机系统每秒能能处理的最大大I/O数量量是固定的,当当CPU和内内存要求的II/O速度大大于系统的速速率时,存储储设备的瓶颈颈就会发生。3.4 网络络当网络负担太重重,网络部件件速度跟不上上,不可能把把数据传输得得更快,网络络瓶颈就会发发生。3.5 其它它由于其它系统硬硬件或软件的的原因而导致致的瓶颈,如如应用系统本本身的设计问问题,超出系系统吞吐量(在一定时间间内系统

38、处理理数据的能力力)的限制等等造成的瓶颈颈。对于Oraclle数据库系系统的存在的的瓶颈问题的的解决,其实实最终还是归归结为数据库库性能优化问问题。实际上上,为了保证证ORACLLE数据库运运行在最佳的的性能状态下下,在信息系系统开发之前前就应该考虑虑数据库的优优化策略。优优化策略一般般包括服务器器操作系统参参数调整、OORACLEE数据库参数数调整、网络络性能调整、应应用程序SQQL语句分析析及设计等几几个方面,其其中应用程序序的分析与设设计是在信息息系统开发之之前完成的。分分析评价ORRACLE数数据库性能主主要有数据库库吞吐量、数数据库用户响响应时间两项项指标6。数据库吞吞吐量是指单单位

39、时间内数数据库完成的的SQL语句句数目:数据库用户户响应时间是是指用户从提提交SQL语句开始到到获得结果的的那一段时间间。数据库用用户响应时间间又可以分为为系统服务时时间和用户等等待时间两项项,即:数据库用户户响应时间=系统服务时时间 + 用用户等待时间间,上述公式式告诉我们,获获得满意的用用户响应时间间有两个途径径:一是减少系系统服务时间间,即提高数数据库的吞吐吐量:二是减少用用户等待时间间,即减少用用户访问同一一数据库资源源的冲突率。4 CPU参参数的调整CPU是服务器器的一项重要要资源,服务务器良好的工工作状态是在在工作高峰时时C使用率在在90%以上上。如果空闲闲时间CPUU使用率就在在

40、90%以上上,说明服务务器缺资源,如如果工作高峰峰时CPU使使用率仍然很很低,说明服服务器CPUU资源还比较较富玉。使用操作作相同命令可可以看到CPPU的使用情情况,一般UUNLK操作作系统的服可可以使用saar一命令查查看CPU的的使用率,NNT操作系统统的服务器,可可以使用N能能管理器来查查看CPU的的使用率。数据库管理员可可以通过查看看v$syssstat数数据字典中“CPU uused bby thhis seessionn”统计项得知知ORACLLE数据库使使用的CPUU时间,查看看“OS UUser llevel CPU ttime”统计项得知知操作系统用用户态下的CCPU时间,查

41、查看“OS Systeem calll CPUU timee”统计项得知知操作系统系系统态下的CCPU时间,操操作系统总的的CPU时间间就是用户态态和系统态时时间之和,如如果ORACCLE数据库库使用的CPPU时间占操操作系统总的的CPU时间间90%以上上,说明服务务器CPU基基本上被ORRACLE数数据库使用着着,这是合理理,反之,说说明服务器CCPU被其它它程序占用过过多,ORAACLE数据据库无法得到到更多的CPPU时间。数数据库管理员员还可以通过过查看v$ssesstaat数据字典典来获得当前前连接ORAACLE数据据库各个会话话占用的CPPU时间,从从而得知什么么会话耗用服服务器CP

42、UU比较多77。出现 CPU 资资源不足的情情况是很多的的:SQL语句句的重解析、低低效率的SQQL语句、锁锁冲突都会引引起CPU资资源不足。(1)数据库管管理员可以执执行下述语句句来查看SQQL语句的解解析情况。SELECT*FROM V$SYSSSTATWHERE NNAME IIN(parsee timee cpu , pparse time elapssed , parrse coount(hhard);这里 parsse timme cpuu是系统服务务时间,paarse ttime eelapseed是响应时时间,用户等等待时间waaite ttime = parsse timme

43、 elaapsed - parrse tiime cppu。由此可以得得到用户SQQL语句平均均解析等待时时间=waiite tiime/ pparse countt。这个平均等等待时间应该该接近于0,如如果平均解析析等待时间过过长,数据库库管理员可以以通过下述语语句来发现是是什么SQLL语句解析效效率比较低。程程序员可以优优化这些语句句,或者增加加ORACLLE参数SEESSIONN_CACHHED_CUURSORSS的值。SELECT SQL_TTEXT,PPARSE_CALLSS,EXECCUTIONNSF ROOM V$SSQLAREEAORDER BBY PARRSE_CAALLS.

44、(2)数据库管管理员还可以以通过下述语语句查看低效效率的SQLL语句,优化化这些语句也也有助于提高高CPU的利利用率。SELECT BUFFEER_GETTS,EXEECUTIOONS, SSQL_TEEXT FRROM V$SQLARREA.(3)数据库管管理员可以通通过v$syysten_eventt数据字典中中的“lattch frree”统计计项查看ORRACLE数数据库的冲突突情况,如果果没有冲突的的话,lattch frree查询出出来没有结果果。如果冲突太大的的话,数据库库管理员可以以降低spiin_couunt参数值值,来消除高高的CPU使使用率。5 内存参数数的调整内存参数的

45、调整整主要是指OORACLEE数据库的系系统全局区(SGA)的调整。SSGA主要由由三部分构成成:共享池、数数据缓冲区、日日志缓冲区。系系统全局区(Systemm Globaal Area,SSGA),SGA随随着不同的环环境而不同,没没有一种普通通的最佳方案案,我们在设设置它之前要先考考虑以下的几几个方面:物理内存多多大;操作系统是是那种及占多多大的内存,数数据库系统是是文件系统还还是裸设备;数据库运行行的模式88。SGAA包括:Fixedd sizee、Variiable Buffeers、Reedo Buufferss。SGA占占有物理内存存的比例没有有严格的规定定,只能遵从从一般的规则

46、则:SGA占据据物理内存的的40%660%左右。如如果通过直观观的公式化来来表达则为:OS使用内存存+SGA+并发进程数数*(sorrt_area_size+HHash_aarea_ssize+22M) seelect sum(vvalue)/10244/10244 fromm v$sgga;SUM(VALLUE)/11024/11024- 500此时 SGA 的当前总大大小近似为 500MBB,并且这个个值将变为 SGA_TTARGETT 的值。接接下来,执行行语句: alter ssystemm set sga_ttargett = 5000M sccope=bboth;这种方法不需要要为

47、各个池设设置不同值;因而,将需需要在参数文文件中使它们们的值为零或或全部删除它它们。 shared_pool_size = 0large_ppool_ssize = 0java_poool_siize = 0db_cachhe_sizze = 00 再循环数据库,使使这些值生效效。 这个人工过程还还可以通过 Enterrprisee Manaager 110g 实施施。从数据库库主页中,选选择 Addminisstratiion 选选项卡,然后后选择 MMemoryy Paraameterrs。对于于人工配置的的内存参数,将将显示标记为为 Enaable 的按钮,以以及所有人工工配置的池的的值

48、。单击 Enabble 按按钮,启用自自动共享内存存管理特性。企企业管理器将将完成剩下的的工作。 在配置了自动内内存分配之后后,可以利用用以下命令检检查它们的大大小: SQL seelect curreent_siize frrom v$buffeer_poool;CURRENTT_SIZEE- 3400SQL seelect pool, sum(bytess)/10224/10224 Mbyytes ffrom vv$sgasstat ggroup by poool;POOL MBYTEES- -java poool 4large ppool 4shared pool 1448正如所看到的,

49、所所有的池都从从 500MMB 的总目目标大小中自自动进行分配配。如图2所所示缓冲高速速缓存大小是是 340MMB,Javva 池是 4MB,大大型池是 44MB,共享享池是 1448MB。它它们合起来总总的大小为 (340+4+4+1148=) 496MBB,近似与 500MBB 的目标 SGA 的的大小相同。 图 2 池池的初始分配配现在假定提供给给Oraclle的主机内内存从 5000MB 减减少为 3000MB,这这意味着必须须减少总 SSGA 的大大小。可以通通过减小目标标 SGA 大小来反映映这种变化。 alter ssystemm set sga_ttargett = 3000M

50、 sccope=bboth;现在查看各个池池,可以看到到: SQL seelect curreent_siize frrom v$buffeer_poool;CURRENTT_SIZEE- 2444SQL seelect pool, sum(bytess)/10224/10224 Mbyytes ffrom vv$sgasstat group bby poool;POOL MBYTEES- -java poool 4large ppool 4shared pool 444占用的总大小是是 240+4+4+444 = 2296MB,接接近于目标的的 300MMB。如图 3 所示,当当 SGA_T

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

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

53、KEEPP 池或 RRECYCLLE 池的非非默认块大小小。如果数据据库有一个块块大小为 88K,而想要要配置 2KK、4K、116K 和 32K 块块大小的池,那那么必须手动动设置它们。它它们的大小将将保持不变;它们将不会会根据负载缩缩小或扩展。当当使用多种大大小的缓冲池池、KEEPP 池和 RRECYCLLE 池时,应应当考虑这个个因素。此外外,日志缓冲冲不受内存调调整的影响不管工作作负载如何,在在参数 loog_bufffer 中中设定的值是是不变的。( 在 100g 中,还还可以在 SSGA 中定定义一种新的的池:流池 (streeam poool),它它用参数 sstreamms_p

54、oool_sizze 进行设设置。该池也也不受自动内内存调整的影影响。) 这就产生了一个个问题,如果需需要一个非默默认块大小的的池,而且想想自动管理其其它的池,那那么该怎么办办? 如果指定了这些些非自动调整整的参数中的的任意一个(如如 db_22k_cacche_siize),那那么它们的总总大小将从 SGA_TTARGETT 值中减去去,以计算自自动调整的参参数值,以使使 SGA 的总大小保保持不变。例例如,假设值值看起来像这这样。sga_tarrget = 500MMdb_2k_ccache_size = 50MM其余的池参数未未设置。500MB 的 2KB 缓缓冲池为自动动调整的池(如如

55、默认块大小小缓冲池 (db_caache_ssize)、共共享池、Jaava 池和和大型池)保保留了 4550MB。当当以一种方法法动态地调整整不可自动调调整的参数(如如 2KB 块大小池)这种方法将影响到可自动调整部分的大小,可自动调整的部分将重新调整。例如,将 db_2k_cache_size 的值从 50MB 提高到 100MB 只为可自动调整的参数剩余 400MB。因此,如图 5 所示,可调整的池(如共享池、大型池、Java 池和默认缓冲池)自动缩小,以将它们的总大小从 450MB 减少到 400MB。图 5 配置置非自动缓冲冲参数的效果果但如果有足够的的可用内存,或或者上述风险险可能

56、不是那那么明显,那那应该怎么办办?如果这样样的话,可以以通过不指定定参数文件中中的参数 SSGA_TAARGET、通通过在文件中中将其设为 0,或者通通过使用 AALTER SYSTEEM 动态地地将其修改为为 0 来关关闭自动大小小调整。当 SGA_TTARGETT 被设为 0 时,池池的当前值被被自动设为它它们的参数。 5.4.3 使用 Ennterprrise MManageer 还可以使用 EEnterpprise Managger 100g 来处理理这些参数。从从数据库主页页中单击超链链接 Meemory Parammeterss,如图 6 所示。 图 6 在 Enterrprise

57、e Manaager 中中调整自动共共享内存管理理注意红圈中的项项目:数据库库在 Auttomatiic Shaared MMemoryy Manaagemennt 模式下下运行,总大大小为 5664MB,与与在参数 SSGA_TAARGET 中指定的值值相同。可以以在此修改它它,然后单击击Applyy按钮接受这这些值,可调整的参参数将自动调调整。 为每每个池指定一一个最小值,假定将 SSGA_TAARGET 设为 6000MB,并并且各个池已已自动分配。表1 各个池池的最小值池大小(MB)缓冲池404Java 池4大型池4共享池148看上述值,可能能推断 4MMB 的 JJava 池池和大型

58、池可可能有点不足足,这个值在在运行时无疑疑需要增加。因因此,可能想想确保这些池池至少在最初初时具有更高高的值,比如如说,分别为为 8MB 和 16MMB。可以通过在在参数文件中中显式地指定定这些池的值值或动态使用用 ALTEER SYSSTEM 来来实现这一目目的(如下所所示)。 alter ssystemm set largee_pooll_sizee = 166M;alter ssystemm set java_pool_size = 8M;现在查看这些池池,可以看到到SQL seelect pool, sum(bytess)/10224/10224 Mbyytes ffrom vv$sg

59、asstat ggroup by poool;POOL MBYTEES- -java poool 8large ppool 116shared pool 1448SQL seelect curreent_siize frrom v$buffeer_poool;CURRENTT_SIZEE- 3888表2 池的的重新分配显显示如下池大小(MB)缓冲池388Java 池8大型池16共享池148如表2所示Jaava 池和和大型池被重重新配置为 8MB 和和 16MBB,并且为了使使总的 SGGA 保持在在 600MMB 以下,缓缓冲池已从 404MBB 减少为 388MBB。当然,这这些池仍然由由自

60、动共享内内存管理控制制它们的大大小将根据需需求缩小或扩扩展。显式指指定的值为池池的大小设定定了一个下限限;它们将永永远不会缩小小到低于这个个界限。 5.4.4 小结 Oracle SGA 中中的各种池的的内存需求不不是静态的。相反,它们们根据系统上上的需求而变变化。Oraacle 数数据库 100g 中的自自动共享内存存管理特性通通过动态地将将资源重新分分配到最需要要它们的地方方同时施加一一个指定的最最大值以防止止分页和交换换,使得Orracle 10g 数据据库的内存得得到更好的优优化配置。6 调整I/OOracle RDBMSS的性能与操操作系统和II/O子系统统密切相关。某某些时候,操操

温馨提示

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

评论

0/150

提交评论