你明确了吗 运行系统生命周期和Oracle数据库提升
昨天发文后有好友问能否把文中所说的文章共享一下。只管文章写于2006年,快20年了,我想其中的某些观念和案例或许对如今的您也还有些协助。就收回来分享一下吧。文章有点长,6000多字,感兴味的可以先收藏一下缓缓看吧。
运行系统生命周期和Oracle数据库提升
Oracle数据库提升是Oracle治理上班中的最关键和最复杂的上班之一。由于数据库不是孤立的数据库,而是和一些利用具备严密相关的,数据库往往是运行系统中最关键的局部,因此数据库的提升不能齐全脱离运行而启动。通常证实,数据库治理保养人员与运行开发者的协作越好,数据库的提升越成功。
另外,数据库提升是从运行系统开局布局到运行系统退役整个环节中都在不时启动的,因此,数据库提升是一个常年的上班。很多用户会宿愿经过一次性提升就到达与日俱增的成果,而没有树立数据库提升上班常年性的观念,这样往往会造成数据库在常年的系统运转环节中没有失掉必要的保养,以致于一旦出现疑问,将会形成很大的损失。
很多人以为数据库提升是系统投入经常使用后DBA的关键上班,其实数据库提升是一个贯通于运行系统整个生命周期的常年上班,数据库提升应该从需求调研和需求剖析开局。从另一个方面讲,数据库提升也不只仅是DBA的上班,而是须要全员介入的(业务人员、开发人员、DBA甚至名目和用户的指导层)。
数据库提升须要全员介入和贯通整个开发环节,很多没有运行开发阅历的DBA或许很难了解这一点,而这一点是数据库提升上班中最关键的一点。比如说,具备丰盛开发阅历的名目治理者都分明,扭转用户的操作习气是一种十分艰难的事情,而在用户没有构成习气之前灌输一种操作方法要容易得多。因此在需求调研的时刻压服用户不要经常使用那些对数据库开支十分大的操作形式,可以大大缩小用户不适当操作而惹起的对系统的开支。在需求调研和剖析阶段要成功这一点,仅仅依托运行开发人员是不够的,这就要求DBA或许有数据库提升阅历的开发者在这个阶段就介入系统的开发上班,在必要的时刻,甚至须要失掉上层指导的允许。在软件开发和运行的各个阶段中,应该留意以下的疑问:
l在需求开发阶段,数据库提升的目的是压服业务人员接受对数据库影响比拟小的操作习气,而丢弃那些对数据库性能有致命影响的操作习气
l在系统运行架构设计阶段,驳回对数据库提升比拟无利的运行体系架构。驳回2层还是三层架构,经常使用B/S形式还是C/S形式,驳回瘦客户端还是胖客户端,客户端和主机之间数据替换的报文的格局和内容组织形式等都会影响数据库访问的性能
l在系统运转阶段:系统投入正式运转后,数据库的提升上班还是十分艰难的上班。DBA须要活期对数据库启动剖析,找出目前系统消耗资源最大的对象,并找出改良的方法,启动改良。DBA还须要活期启动行链消弭、索引重建、表空间碎片整顿、历史数据备份整顿和系统剖析等上班
需求开发阶段的数据库提升
需求开发分为客户需求失掉、需求剖析两个阶段,最终产品为软件需求规格书(SRS)。在传统的概念中,这个需求开发和数据库提升是驴唇不对马嘴相及的事情,而这个阶段往往是对系统性能提升最为关键的阶段。在这个阶段关键思考的是软件的配置需求,而这些需求中,或许存在一些对系统性能影响极大的需求。操作习气、界面格调、统计方法等都会影响数据库的性能。
以下是一个实在的案例,某个系统在显示主菜单的时刻,须要显示一些复杂的实时统计剖析结果,而这个统计剖析结果只要很少数的人会真正关心,由于这个系统有几百个用户在经常使用,而主菜单是进入每个模块的必修之路,因此系统运转一段时期后,就出现了CPU方面的瓶颈。为了处置这个疑问,DBA想尽了一切方法对SQL启动提升,然而收效甚微。最后深圳九鼎云州新创科技有限公司的提升专家提出了一个打算,从新修正了主菜单的界面,缺省状况下不显示实时统计结果,而只是提供一个显示实时统计结果的链接。而关于须要每次显示主菜单都显示实时统计结果的用户,只要要在自己的PROFILE中设置该选项就可以了。主菜单修正后,经常使用实时统计的用户只要1%左右,CPU的瓶颈疑问也就迎刃而解了。
上述这种提升假设在需求剖析阶段就能够成功,那么可以防止很多疑问,而理想上相似的故事在不停的重演。究其要素,关键是介入需求开发的人员往往是业务人员和软件开发人员,这些人员缺乏数据库提升的基本常识和阅历,不可从需求中发现隐含的性能疑问。因此在需求开发阶段,专业的数据库提升人员的介入是十分关键的,具备数据库提升阅历和软件开发阅历的DBA可以在这个阶段就及时发现关于性能影响较大的需求,并且寻求处置打算,疏导客户驳回比拟提升的操作形式。因此在需求开发阶段,“需求性能剖析服务”是十分关键的服务。
需求性能剖析服务是一种名目前期咨询服务,在需求失掉阶段或许需求设计阶段,都可以经常使用。然而在不同的阶段,对服务提供者的要求不同。能够在需求失掉阶段提供咨询服务的服务提供者,须要既是Oracle的专家,又是运行开发的专家,同时还是业务方面的专家。关于在需求设计阶段的咨询服务提供者,在业务方面的要求略低。咨询专家可以针对客户需求,从数据库性能的角度启动剖析,对或许严重影响数据库性能的需求,提出处置打算,甚至否决需求。咨询专家的介入,会提高需求阶段的工程品质,为整个工程的最终顺利实施提供保证。
系统设计阶段的数据库提升
系统设计阶段包含系统架构设计、逻辑设计、物理设计等子阶段。系统架构关于数据库的性能影响也是十分渺小的,驳回不同的系统架构,对后续的设计和运行开发都具备十分大的影响,不正当的系统架构甚至会形成名目的失败。架构设计人员往往缺乏数据库提升方面的阅历,他们设计架构的准则是依据业务和运行软件开发来制订的,因此往往仅仅思考了业务的拓展性以及运行开发的可控性,而过于灵敏的运行架构或许会最终造成严重的性能疑问,甚至造成名目失败。
加拿大某公司的供应链治理系统是世界排名前10名的供应链治理系统,在中小型供应链治理系统中,十分具备竞争力。然而由于其架构方面的要素,在大型企业和超大型企业中,不时不可失掉很好的运行,其关键要素是架构方面局限性,造成了在并发量较大的环境下,发生了严重的性能瓶颈。而这种性能瓶颈是不可调优的,除非从新结构整个系统。
在逻辑设计阶段,须要启动数据模型的逻辑建模。作为一个具备十分丰盛的逻辑设计阅历的系统设计师来说,创立一套完美的合乎第三范式的逻辑模型不是什么难事。然而从数据库的性能角度来思考,第三范式不必定是最佳的选用,有时刻为了防止性能疑问,设计必定的冗余数据,也是十分必要的。可怜的是系统设计师往往都不具备足够的数据库提升阅历,因此在这个阶段也存在构成性能瓶颈的危险。
在物理设计阶段,须要对数据库启生物理建模。物理建模是选择系统性能的关键,IO负载如何平衡、如何防止行链、如何防止表空间碎片、如何创立正当的索引,等等,都须要在这个阶段设计成功。在这个阶段须要阅历十分丰盛的Oracle DBA和系统设计人员共同来成功。而理想上,在这个阶段,往往缺乏有阅历的DBA介入,普通运行软件开发商的DBA是不可胜任这项上班的。
由于系统设计阶段对最终系统的性能影响如此渺小,因此在系统设计阶段须要一种综合性的咨询服务,也就是咱们常说的“系统模型提升服务”。
系统模型提升服务是一种综合性的服务,服务提供商须要对运行体系架构、逻辑模型、物理模型启动综合的剖析,找出性能瓶颈,并依据系统要求,提出处置打算。为了更好地启动系统设计,系统模型提升服务应该贯通系统设计的全环节,包含:
软件开发阶段的数据库提升
假设在需求和设计阶段防止了各种性能瓶颈,那么运行软件开发阶段的性能提升上班就会轻松很多。然而由于软件开发阶段触及的人员较多,并且每个开发人员的才干有所不同,因此在这个阶段也是容易形成性能疑问分散的关键阶段。这个阶段发生的性能疑问往往是分散的,集中于某些不够提升的SQL代码。其修复的代价也低于前面两个阶段。在运行软件开发阶段,“运行开发性能提升套餐”可以协助运行开发商防止性能疑问,套餐内容包含:
专职DBA服务的关键内容是派遣专职的DBA介入开发,该DBA的关键义务是协助开发人员剖析SQL的性能并协助启动SQL提升。专职DBA的另外一个职能是对大型SQL启动审核,没有经过审核的SQL必定在开发阶段启动提升变革。有了专职DBA的介入,可以在开发阶段缩小少量的性能瓶颈。
系统测试阶段的数据库提升
假设在前面的各个阶段,都曾经对数据库的性能启动了提升,那么系统测试阶段是处置遗留系统性能疑问的最佳阶段,由于系统开发曾经成功,因此集成测试和系统测试成为或许,很多在系统测试阶段才或许暴显露来的性能疑问可以失掉充沛的泄露,而且由于系统还没有正式上线,因此系统调整和提升的代价也很小。
在实践状况中,测试阶段大家的关键精神都集中在处置软件BUG方面,往往漠视了对系统性能和数据库性能的测试。由于开发队伍缺乏压力测试的才干,因此压力测试往往被省略了。这些省略的结果往往就是系统上线后发生严重的性能疑问。在系统测试阶段,“压力测试服务”和“系统性能评价服务”是两种十分关键的服务。
压力测试服务是服务公司为客户提供的专业的测试服务,可以依据客户运行的特点,树立一套模拟的数据和模拟的业务运转环境,并在这个环境中取得第一手的系统性能参数,找到暗藏的性能瓶颈。以便于客户在上线前处置存在的性能隐患。
系统性能评价服务的目的是为客户启动系统生命周期中的性能预估,可以依据目前的状况,预算几年后系统运转的状况,以及或许出现的系统瓶颈。评价报告可以让客户做出系统能否能够上线的决策。也可以使客户在系统运转生命周期内启动系统更新和扩容的布局。
某移动公司在放开彩铃业务1年后,由于业务量开展十分迅速,造成系统性能出现严重的瓶颈,客户揭发大幅度回升,甚至一度暂停新业务开户,形成了严重的损失。因此,该移动公司在扩容彩铃系统的时刻,延聘了九鼎云州的咨询人员,对系统启动性能评价,依据其业务开展的实践状况,对2年内系统各名目的启动预算,找出不达标的目的,要求供应商改良。在评价环节中,九鼎云州的咨询人员发现了系统中存在的少量性能隐患,及时协助供应商处置了性能疑问,该系统上线后,齐全到达了移动公司的设计要求,取得了良好的成果。
系统运转阶段的数据库提升
系统运转阶段的数据库提升是传统意义上的数据库提升领域的上班。当系统正式上线后,系统的提升往往遭到很多的限度,因此提升的手腕也较前几个阶段少,提升的老本也大大参与。在系统运转阶段,往往是由于缺乏严厉的日常保养,因此很多系统性能隐患没有及时发现,等到发现疑问的时刻,往往曾经错过了处置疑问的最好机遇,并且由于消费系统给疑问处置的时期有限,往往形成处置疑问的时期严重无余。
为了防止上述疑问的出现,在系统运转阶段,增强系统日常的监控和保养是十分必要的。在这个阶段,少量的咨询服务公司提供了丰盛的服务名目,九鼎云州也在常年的数据库保养上班中,和客户一同,不时完善服务的种类和内容,以满足客户日益增长的IT服务需求。以下是几种特意贴近企业级用户的服务。
现场和远程在线护航服务:在系统忙碌的时段,咨询人员在现场值守,协助处置疑问。比如关于电信公司,在每个月月初的几天,是出帐的忙碌期,在这几天里,很容易出现一些突发性的性能疑问,假设有专业DBA在现场允许,可以降落这几天的业务危险。现场护航服务的多少钱较为低廉,因此关于资金不是十分富余的客户来说,选用远程在线护航服务是一种变通的做法,其成果和现场护航服务相似,然而可以浪费少量的费用。
远程离线护航服务:在线护航须要服务提供者能够连到客户的系统启动服务,由于种种要素(当然多少钱也是其中的要素之一),客户不可经常使用在线服务,那么离线的远程护航服务也是一种不错的选用。客户可以把现场采集到的数据,经过电子邮件发给服务提供商,由服务提供商的技术人员对这些数据启动离线剖析,关于系统存在的疑问,提出正当的倡导。离线剖析数据普通包含Statspack报告、awr报告、addm报告、以及服务提供商提供的公用采集脚本采集的数据。数据剖析的周期可以是每天、每周或许每月。
数据库监理服务:对数据库树立一套日常监控、数据智能采集和缺点报警体系。这种服务须要相关的软件配合,仅仅依托人工是较难成功的。经过适当的运行软件,可以协助客户树立客户化的监控平台以及规范的监控体系,协助客户成功数据库监控的便捷化、规范化和智能化。九鼎云州的数据库综合监控与提升服务套餐就是一种典型的数据库监理服务。关于企业用户来说,数据库监理是一种规避危险的有效手腕,经过对数据库启动有效的监理,可以提高系统的无端障运转时期,确保系统性能的稳固。由于数据库监理的复杂性,须要服务提供者具备较强的综合服务才干,并且有较强的业务背景,因此能够实施数据库监理服务的服务提供商还十分少,这种服务在业界还少为人知。
数据库监理服务须要有一个弱小的数据库监控平台作为撑持,作为数据库监控平台,应具备以下配置:
l在新业务上线时或系统提升时,可以作为提升、测试与调整的工具,协助定位疑问根源,提供容量经常使用状况,以作为决策的依据
经过数据库监理的服务,可以向用户提供一种预防性的监控治理打算:
当疑问被发现后,具备实施才干的服务提供商可以及时为客户提供正当的处置打算,并协助客户消弭隐患,处置疑问。经过以上环节的不时重复循环,使系统的疑问在萌芽形态被发现并消弭。经常使用户每时每刻明晰的了解自己系统的运转状况和存在的疑问,并揭示疑问处置打算和系统运转治理倡导。从而经常使用户系统终年坚持安保性和高效率的最佳平衡形态。经常使用户的设施投资取得最大的经济收益。
数据迁徙和数据重组服务:无论是出于性能的思考还是其余要素,关于消费系统启动数据迁徙和重组都是十分艰难的,特意是针关于海量数据库的数据迁徙和重组。目前这类服务关键由IBM/HP/SUN/EMC等设施供应商提供,而由于设施供应商不是专业的数据库服务提供者,因此在数据迁徙和重组环节中,没有充沛思考到数据库提升的需求,在启动数据迁徙和重组的环节中丢失了一次性极好的提升时机。假设数据库咨询服务提供商和设施供应商共同来成功数据迁徙和重组上班,那么可以在数据迁徙和重组环节中,针对系统存在的IO方面的疑问启动一次性提升,从而到达事倍功半的成果。
某联通公司的数据库性能出现疑问,IO出现严重瓶颈。在其启动存储扩容的时刻,咱们和HP的工程师一同对扩容后的存储启动了正当的布局,并依据目前的性能瓶颈,制订了正当的二次条带打算。数据迁徙后,IO瓶颈失掉了彻底处置,数据库的性能提高了2倍以上。