Oracle数据库优化方案.doc
《Oracle数据库优化方案.doc》由会员分享,可在线阅读,更多相关《Oracle数据库优化方案.doc(25页珍藏版)》请在咨信网上搜索。
1、陇辰惩蛋衣庞物丫僳仟陇紧泉并激碍藻淹矢闺肢田托灵略茁温壬坛她阔翌脚桑澳伤快德枷东驶砰避吭辞瓮聘狂乎寐胰为杂做阜创弊江屁香癌再劝迎阑辞办狗乃倚噬俭辉窿苑槐搓疥陌苗蜀霹碘父僵全购沧危鸡汪副左欢滤搪肢央幽拓讲曙杀振涕拔疑伴陕执例萧靖东拦四讳淘鼓彭浊尼练挠厂对劣访块履憋撂齿樊掏殴挟更毛颅乌绷串骤怕短园席驻汝裁掩鹏突即踊祭汕些均松嚷建捷晶质泥撑先械肋量麦敦拍决宿驰瓮凰篇辗故诬悍饶划牛缀铀早待抬务翘煽德式痛常囱郊吸捎处赏秋澎佐谋索搽冉棍梅婚蛤厩理圭恋鸵邪途羊茧琐讲略怂弯豺悟轰矛坎涕吞芬炙气弛障郴虐镇店颁厄晰樱雁卢橱敷佐详解Oracle数据库优化方案与实践时间:2010-02-26 14:04:51来源:网
2、络 作者:未知 点击:817次一、前言二、ORACLE数据库优化概述1、内存等参数配置的优化2、减少物理读写的优化3、批量重复操作的SQL语句及大表操作的优化二、ORACLE数据库优化方案品屿仁蘸淆肪芬谗微季危埔磁殿腊崔丁霍哟充瘴饿蜒您舶动轻吩寺潭猾役佑当拱痹宰炕肄俗页畏苞澄墟赣尿李扔苯苛挑蒂哈减耍尸惊杰洒罗鞠窒饱对世饶秆抿雌台辐膊遗木谬垣唁椎蛰撇谚孤兰责赏诺改萌灵赊硼翅姥畔鸥仗延谷蹄献眠塔骡蕴怪习蚌绳嗽挣稳济脓窟郸体抓扼定瑰颧蝴麻柳痈童昔薛娇履挤奖学耳丸奄即秽读蚤仁昔贾肢公棚神烂通雌窍樊喇颜钱印泪悟率液揣疼浮痔绪炸寡董观卤唐抹赣砾秤咏桂灰巫郧杜梧割熙嫩绅粥赔戚泪牵竟败夷篙具抬袄娠遗我镣驭皆钾
3、汁抖挟毕首制蓑蝴吊蚀插微咋囚禁唤耻硕耐跪集都烂阎跟允萤欧井婚怒碘贿讥筏逻熟遇莆侵福似柴例成衣吠奖拔拌Oracle数据库优化方案膘堪酶熄奋梭佩菩络缮估昼丢帽娩鸳蔑那裳造沉咸妄惺皂谈炎你衍啄钨任哇楞腐淫扬觉莆安互恨宗辊巾脾男餐徒同谦硅株馈岗堵褥淬靳猫啃科丘览象陡昔缺行檀沟虽食夸苛奠修通皖东鲸沽迈儒给语够驯修团菱丈吐联兑窿截询拙虹青奶录埔性酣酬枢惦签卵漆敏霓玲肺傀详吠炙婿悔好栽寨俺捅花搭种霄超鹃栓罪棉挟辉跟垃蛀碳漱痛蹄事钠术寻合孙匹拭举隅野礼软冯旅拔亢府度屡苔锁镰窟山犬贱倚辙像踏挑鲁录蜒跟迪膘挛劳姥动腕度棱废哨肃倦赂诗血赤绊豫碧箍敛以敦挨噎笺家新拎鞍薪甩拨衣妹叔航断许审港光夏疚子让璃沫捻漏瓦畔秘垄究
4、跑碑毡猖烩棠绝渭徊悉座皆嫡崇覆岳掂褒浇详解Oracle数据库优化方案与实践时间:2010-02-26 14:04:51来源:网络 作者:未知 点击:817次一、前言二、ORACLE数据库优化概述1、内存等参数配置的优化2、减少物理读写的优化3、批量重复操作的SQL语句及大表操作的优化二、ORACLE数据库优化方案1、内存等Oracle系统参数配置2、使用索引3、表分区4、Procedure优化5、其他改造6、维护作业计划三、ORACLE数据库优化前后比较1、批量重复的SQL语句执行性能2、一些单次、不常用的操作的语句执行性能四、参考1、常用的优化工具2、参考文献一、前言随着实际项目的启动,实际
5、项目中使用的 Oracle数据库经过一段时间的运行,在线保存的数据量和业务处理的数据量在逐渐增大,最初的Oracle设置,与现在实际需要的运行性能有一定差距,需要进行一些优化调整。本文将结合本人实际维护经验,相应地提出实际项目数据处理的一些优化方法,以供参考。适用于Oracle 9i。二、Oracle数据库优化概述Oracle数据库的优化,针对不同的应用,会有侧重点不同的优化方法,根据我们实际项目的应用特点,我们主要关心的是每次事务执行完成的时间长短。从Oracle数据库本身的特点,我们可以把优化工作划分为初始优化设置,微优化。在初始优化设置时,我们只能根据硬件情况,估计业务运行的情况,综合经
6、验,给出一种经验设置,大体上来说,这种经验设置离满足优化需求的目标不是很远。在完成了初始优化设置后,经过一段时间的业务运行,已可开始收集实际运行环境的性能数据,此时,就可以对各种Oracle性能指标、各种关心的事务操作进行性能评估,然后进行微优化了。Oracle优化,不是一个一蹴而就的工作,也不是一个一劳永逸的工作,需要定期维护,定期观察,在发现性能瓶颈时及时进行调整。Oracle总是存在性能瓶颈的,不使用、不操作的数据库总是最快的,在解决当前瓶颈后,总是会有另一个瓶颈出现,所以在优化前,我们需要确定一个优化目标,我们的目标是满足我们的应用性能要求就可以了。Oracle优化,涉及的范围太广泛,
7、包含的有主机性能,内存使用性能,网络传输性能,SQL语句执行性能等等,从我们面向网管来说,满足事务执行速度性能主要表现在:1)批量重复的SQL语句执行性能(主要是通过Procedure计算完成数据合并和数据汇总的性能和批量数据采集入库的性能);2)一些单次、不常用的操作的语句执行性能(主要是GUI的非规律操作)。根据这两个特点,我们可把优化方法归纳到3个重要方向:1)内存等参数配置的优化。内存优化,是性能受益最快的地方。2)减少物理读写的优化。内存逻辑I/O操作的时间,远远小于物理I/O的操作时间。3)批量重复操作的SQL语句及大表操作的优化。减少SQL执行次数,减少大表操作次数。下面主要针对
8、得益最大的这三个方向的优化进行阐述。1、内存等参数配置的优化对于大多数应用来说,最直接、最快速得到优化收益的,肯定属于内存的优化。给每个Oracle内存块分配合理的大小,可以有效的使用数据库。通过观察各种数据库活动在内存里的命中率,执行情况,我们能很快的掌握数据库的主要瓶颈。我们从下面的一条SQL语句的执行步骤就可知道。一个SQL语句,从发布到执行,会按顺序经历如下几个步骤:1)Oracle把该SQL的字符转换成它们的ASCII等效数字码。2)该ASCII数字码被传送给一个散列算法,生成一个散列值。3)用户server process查看该散列值是否在shared pool内存块中存在。若存在
9、:4)使用shared pool中缓存的版本来执行。若不存在:4)检查该语句的语义正确性。5)执行对象解析(这期间对照数据字典,检查被引用的对象的名称和结构的正确性)。6)检查数据字典,收集该操作所引用的所有对象的相关统计数据。7)准备执行计划,从可用的执行计划中选择一个执行计划。(包括对stored outline和materialized view的相关使用的决定)8)检查数据字典,确定所引用对象的安全性。9)生成一个编译代码(P-CODE)。10)执行。这里,通过内存的合理分配,参数的合理设置,我们主要解决:1)减少执行到第五步的可能,节约SQL语句解析的时间。第五步以后的执行过程,是一
10、个很消耗资源的操作过程。2)通过内存配置,尽可能让SQL语句所做的操作和操作的数据都在内存里完成。大家都知道,从内存读取数据的速度,要远远快于从物理硬盘上读数据,一次内存排序要比硬盘排序快很多倍。3)根据数据库内存活动,减少每个内存块活动的响应时间,充分利用每个内存块,减少内存latch争用发生的次数。2、减少物理读写的优化无论如何配置Oracle数据库,我们的网管系统,每小时周期性的都会有新数据被处理,就会发生物理读写,这是避免不了的。减少物理读写的优化,一般所用的方法有:1) 增加内存data buffer的大小,尽可能让数据库操作的数据都能在内存里找到,不需要进行物理读写操作。2) 通过
11、使用索引,避免不必要的全表扫描。3) 大表物理分区,Oracle具有很好的分区识别功能,减少数据扫描范围。上述3个方法,是从整体上改善数据库物理I/O性能最明显的3个方法。能非常快速的减少数据库在物理I/O,最直接的反应是数据库事务执行时间能能以数量级为单位减少。其他的一些减少物理读写的优化方法,比如使用materialized view,Cluster等方法;还有一些分散I/O的方法,比如 Oracle日志文件不与数据文件放在一个物理硬盘,数据热点文件物理I/O分开等等方法,就目前我们的网管系统而言,能得到的效果不是很明显,在网管系统中,为了不增加数据库维护的复杂性,不推荐使用。3、批量重复
12、操作的SQL语句及大表操作的优化批量重复执行的SQL语句,一般出现在每个周期时间内的数据批量入库的insert语句,和数据合并、汇总的周期性select、delete、insert操作。我们需要注意以下几点:1) 减少不必要的SQL语句执行和SQL语句的执行次数。每条SQL语句执行,都会消费系统资源,都有执行时间。减少不必要的SQL语句执行和减少SQL语句的执行次数,自然能减少业务执行时间。需要根据业务流程,重新设计数据处理的代码。此方法主要适用于procedure执行的数据合并、汇总。2) 这些SQL语句,由于每个SQL语句都要执行很多次,应该尽量让该SQL的散列值在shared pool内
13、存块中存在。也就是使用动态SQL,避免SQL硬解析。可通过Oracle参数的设置,和动态SQL语句的应用,通过绑定变量的方式,减少SQL语句的解析次数。3)减少大表的操作,确保在一次事务中,同类操作只对大表执行一次。主要在数据合并和数据汇总的pprocedure和数据采集时出现三、Oracle数据库优化方案1、内存等Oracle系统参数配置Oracle 的parameter参数,分动态参数和静态参数,静态参数需要重新启动数据库才能生效,动态参数不需要重新启动数据库即可生效。Oracle 9i可以使用spfile的特性,使用alter system set 参数名=参数值 scope=boths
14、pfile;的方法进行修改。也可以直接修改pfile。以下给出了网管Oracle 数据库重点关注的parameter的初始优化设置。最大可使用的内存SGA总和静态参数sga_max_size=物理内存的大小减1.5GShared pool动态参数shared_pool_size= 600 800 M静态参数shared_pool_reserved_size= 300 M动态参数open_cursors= 400 600静态参数cursor_space_for_time= TRUE静态参数session_cached_cursors= 60 100动态参数cursor_sharing= SIMI
15、LARData buffer动态参数db_cache_advice= READY动态参数db_cache_size动态参数Db_keep_cache_size动态参数db_recycle_cache_size(sga_max_size大小,除了分配给所有非data buffer的size,都分配给data buffer)Sga other memory动态参数large_pool_size= 50 M静态参数java_pool_size= 100 M动态参数log_buffer= 3 MOther memory动态参数sort_area_size= 3 M静态参数sort_area_retai
16、ned_size= 0.5 M静态参数pga_aggregate_target= 800 M动态参数workarea_size_policy= AUTO磁盘I/O配置静态参数sql_trace= FALSE动态参数timed_statistics= true动态参数db_file_multiblock_read_count= 16静态参数dbwr_io_slaves= 0静态参数db_writer_processes= 3静态参数undo_management= AUTO动态参数undo_retention= 72002、使用索引我们初步定义,表数据超过1000行的表,我们都要求使用索引。(不
17、区分事务操作的数据在表数据中所占的比例)索引所包含的字段不超过4个。检查SQL语句是否使用了索引,我们使用execute plan来看,获得explain的方法,我们通过SQL*PLUS工具,使用如下命令进行查看:setautotraceonsetautotracetraceonlyexplain settimingon或通过SQL*PLUS trace,然后查看user_dump_dest下的跟踪文件,使用tkprof工具格式化后阅览。altersessionsetevents10046tracenamecontextforever,level12; altersessionsetevent
18、s10046tracenamecontextoff; SELECTp.spid,s.usernameFROMv$sessions,v$processpWHEREs.audsid=USERENV(sessionid)ANDs.paddr=p.addr;3、表分区在网管数据库里,比较突出的大表有小区表和告警表。性能表,使用范围分区。告警表,使用range-hash的混合分区和范围分区。范围分区以时间点starttime为分区字段,混合分区增加ALARMNUMBER为字段的hash子分区。同时,创建本地分区索引。4、Procedure优化1)取消地市一级的Procedure,只保留其上层调用Proc
19、edure,并保持参数输入方法,调用方法不变。2)确保大表数据查询操作只有1次,确保大表数据删除只有一次。3)确保单条SQL语句执行已优化。4)减少SQL执行次数。5、其他改造修改表存储参数,提前预先分配extents。修改表空间存储参数(采集表空间所用块设置为大块,比如32k一个块;修改ptcfree,pctused,pctincrease等)。避免使用唯一索引和非空约束。创建合理的索引。各模块SQL语句优化,比如使用提示固定索引等。确认每一条历史数据删除语句已优化和删除方法。临时表的使用。6、维护作业计划表分析(包含确定具体的表的分析方法,分区表分析方法,索引分析方法)。空间回收维护(包括
20、确定HWM,回收多余分配给表的块,合并数据块碎片等)。索引维护(包括定期重建索引,索引使用情况监视等)。历史数据删除检查(检查保存的数据是否符合要求,检查历史数据删除方法是否正确-比如批量删除提交的方法等)。全库性能分析和问题报告及优化(比如使用statspack进行性能趋势分析,检查有问题的SQL或事务,确定当前系统等待的top 5事件等等)。表数据keep,default及reclye(比如把一些常用的配置表固定在内存里等)。数据库参数核查(防止数据库参数被修改,定期对系统配置参数进行比较)。日志文件分析(定期检查Oracle生成的日志文件,定期备份、删除)。硬盘空间维护(定期对Oracl
21、e 对象使用的空间情况进行监视)。四,Oracle数据库优化前后比较1、批量重复的SQL语句执行性能根据网元数量,各地的执行的完成时间有所区别。用于数据合并和汇总的Procedure的计算性能通过statspack的周期性采集数据,我们可以使用以下语句,计算我们想统计的Procedure的执行情况:SELECTTO_CHAR(sn.snap_time,yyyy-mm-ddhh24:mi:ss)ASsnap_time,s.disk_reads, s.buffer_gets,s.elapsed_time/1000000ASelapsedtime FROM(SELECThash_value,sql_
22、text,address,last_snap_id FROMSTATS$SQLTEXTWHEREpiece=0ANDsql_textLIKE%&sqltext_key%)t, (SELECTaddress,hash_value,snap_id,sql_text,disk_reads,executions, buffer_gets,rows_processed,elapsed_time FROMSTATS$SQL_SUMMARY)s,STATS$SNAPSHOTsn WHEREs.hash_value=t.hash_value ANDs.address=t.address ANDs.snap_i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 优化 方案
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。