版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件项目维护方案1.项目背景及目标1.1.项目背景在国家政策的指导和帮助下,信息化也越来越发挥出十分重要的作用。XXXX不断加大信息化管理工作力度,积极实施“上网工程”,大力推进全市局域网建设,加快办公自动化系统进程,信息技术在改革中发挥了重要的支撑作用,为充分发挥政府公共职能,促进依法理财、科学理财,提供了重要的信息技术保障。近年来建设各系统随着数据量的逐年增加,陆续出现了性能问题,有必要进行数据库系统的升级及性能优化,以确保应用系统的正常运行,为单位员工提供更好的信息服务。项目目标对各系统数据库进行补丁升级服务,安装补丁前制定详细的升级计划和应急回退计划。完成各系统数据库的性能调优工作。各
2、业务持续性得到有效的保证。需求分析XXXXXXX项目,我公司有多年的行业经验。具有对运维服务对象进行适时监测、指标分析、和及时修复的能力。Oracle产品日常运行维护项目主要从如下几个方面进行:(1) .每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情况,系统资源的使用情况进行查看,发现并解决问题。(2) .每周对数据库对象的空间扩展情况,数据的增长情况进行监控,对数据库做健康查看,对数据库对象的状态做查看。(3) .查看表空间碎片,提出下一步空间管理计划。对ORACLE数据库状态进行一次全面查看。(4) 由于这些数据库系统承载着XXXX非常重要的业务系统数据,所以在
3、日常维护中需要非常仔细,每周、每月、每季都需要有相应的巡检记录,需要详细记载以下一些内容:监控数据库对象的空间扩展情况监控数据量的增长情况系统健康查看,查看以下内容:数据库对象有效性查看查看是否有危害到安全策略的问题。查看alert、Sqlnet等日志并归档报错日志分析表和索引查看对数据库会产生危害的增长速度查看表空间碎片数据库性能调整预测数据库将来的性能调整和维护工作后续空间整体运行维护服务方案Lifekeeper维护验证LifeKeeper的安装查看已经安装的LifeKeeper软件包,可以使用命令:rpma|grepstee启动LifeKeepera) 启动LifeKeeper服务器进程
4、如果当前您的系统没有运行LifeKeeper则在所有服务器上以root用户身份输入如下命令# /opt/LifeKeeper/bin/lkstartb) 启动LifeKeeperGUI服务器进程同样以root用户运行命令# /opt/LifeKeeper/bin/lkGUIserverstart注意:以上命令只需运行一次,以后每次系统重新启动时,LifeKeeper会自动运行上述进程有关的LifeKeeper软件的其它管理任务a) 停止LifeKeeper服务如果需要在服务器上永久停止LifeKeeper服务,可以输入下列命令$LKROOT/bin/lkstop该命令同时会使所有LifeKee
5、per保护的资源处于退出服务状态,如果希望在停止LifeKeeper时保持资源/应用的运行,可以使用:$LKROOT/bin/lkstop-fb) 查看LifeKeeper进程键入下列命令可以查看当前运行的所有LifeKeeper进程列表ps-ef|grepLifeKeeper启动LifeKeeperGUI配置工具进入LifeKeeperGUI管理工具可以通过运行命令:/opt/LifeKeeper/bin/lkGUIapp则出现LifeKeeper登录界面:可以使用root用户登录,也可以使用新建的用户进行登录。检测LifeKeeper集群运行状态可以使用Icdstatus命令对LifeKe
6、eper集群的当前运行状态进行查看,命令格式:Icdstatus-q-d<主机名>该程序向stdout输出在LifeKeeper资源层次配置状态和通信路径的状态选项-q表示输出采用简略的形式(建议使用该选项)选项-d表示要查看的主机,缺X查看本机管理LifeKeeper中的资源注意:如果能运行LifeKeeperGUI,则使用其提供菜单命令执行相应操作;在执行命令行启动/停止资源前,一定先使用Icdstatus命令确认资源的实际状态。a)启用资源(In-Service)可以使用命令:./perform_action-t<资源标记名>-arestore将资源标记名所对应的
7、资源在本机上投入服务(启动)。如果该资源在命令使用前已经在另一台机器上处于运行状态,则本命令执行的结果相当于执行了一次手工切换!如果该资源在命令使用前是处于停止状态(即在备机上执行本命令),则本命令执行的结果相当于执行了一次手工切换b)停止资源(out-of-service)可以使用命令:./perform_action-t<资源标记名>-aremove将资源标记名所对应的资源在本机上停止服务。如果该资源在命令使用前已经在另一台机器上处于运行状态,则本命令执行不产生任何结果在执行命令行前后,一定先使用Icdstatus命令确认资源的当前状态。命令停止/启动本地的资源命令中的资源标记
8、名是区分大小写的一定要等待命令完成,注意命令的输出。详细用法见在线帮助手册。SQLSERVE维护计算机系统各种软、硬件故障、用户误操作以及恶意破坏是不可避免的,这些影响到数据的正确性甚至造成数据损失、服务器崩溃等致命后果。数据库的备份对保证系统的可靠性具有重要的作用。下面会根据执行强度对维护任务及其相应的程序进行分类描述,执行强度用不同的时间间隔定义,包括每天、每周、每月和每季度,能够建立起良好的维护实务,确保SQLServer数据库性能和安全。每天的例行维护任务需要数据库管理员密切关注的维护任务,最好每天都查看一下,这样可以确保系统的可靠性、可用性、运行性能和安全。每天的例行维护任务包括:1
9、、查看是不是所有被请求的SQLServer服务都正常运行。2、查看日常备份日志中成功、警告或者失败记录。3、查看Windows事件日志有没有错误记录。4、查看SQLServer日志有没有安全警告记录,例如非法登录。5、执行完全备份或差异备份。6、在设置了完全恢复模型或大容量日恢复模型的数据库上执行事务日志备份任务。7、核实SQLServer作业没有失败。8、查看所有的数据库文件和事务日志具有合适的磁盘空间大小。9、至少要监控处理器、内存或者磁盘计数器没有出现瓶颈。每周的例行维护任务关注程度稍逊于每天的例行维护任务,最好每周进行一次例行查看。每周的例行维护任务包括:1、执行完全备份或差异备份。2
10、、查看以前执行的维护计划报告。3、查看数据库完整性。4、如果需要,执行收缩数据库任务。5、通过重新组织索引任务压缩聚集和非聚集表和视图。6、通过重新生成索引任务在数据页和索引页重新组织数据。7、更新所有用户表和系统表的统计信息&清除备份、还原、SQLServer代理作业和维护计划等操作的历史数据。9、如果需要,手动增长数据库或事务日志文件10、清除执行维护计划残留下来的文件。每月或每季度的维护任务有一些维护计划不需要执行得过于频繁,可以每个月或每个季度执行一次。但是请不要以为这些任务不需要天天执行就无足轻重,这些任务可以确保数据库环境的健康,所以不要轻视以下这些维护任务:1、在测试环境
11、中执行备份还原操作。2、将历史数据归档。3、分析收集的性能统计数据,与基准值相比较。3、查看并更新维护文档。4、查看并安装最新的SQLServer补丁和补丁包。5、如果运行簇、数据库镜像或日志传送,则监测故障转移。6、验证备份和还原进程是否遵循已定义的服务等级协议。7、更新SQLServer构建指南。&更新SQLServer灾难恢复文档。9、更新维护计划列表10、修改管理员口令。11、修改SQLServer服务帐户口令。WebLogic维护性能调优设定执行队列的溢出条件WeblogicServer提供给默认的执行队列或用户自定义的执行队列自定义溢出条件的功能,当满足此溢出条件时,服务器
12、改变其状态为“警告”状态,并且额外的再分配一些线程去处理在队列中的请求,而达到降低队列长度的目的。通过启动管理控制台,在域(如:mydomain)服务器server实例(如:myserver)ExecuteQueue配置下面几项:队列长度:此值表示执行队列中可容纳的最大请求数,默认值是65536,最后不要手动改变此值。队列长度阈值百分比:此值表示溢出条件,在此服务器指出队列溢出之前可以达到的队列长度大小的百分比。线程数增加:当检测到溢出条件时,将增加到执行队列中的线程数量。如果CPU和内存不是足够的高,尽量不要改变默认值“0”。因为Weblogic一旦增加后不会自动缩减,虽然最终可能确实起到了
13、降低请求的作用,但在将来的运行中将影响程序的性能。最大线程数:为了防止创建过多的线程数量,可以通过设定最大的线程数进行控制。在实际的应用场景中,应根据具体情况适当的调整以上参数。设定队列监测行为WeblogicServer能够自动监测到当一个执行线程变为“阻塞”。变为“阻塞”状态的执行线程将无法完成当前的工作,也无法再执行新请求。如果执行队列中的所有执行线程都变为“阻塞”状态,Weblogicserver可能改变状态为“警告”或“严重”状态。如果Weblogicserver变为“严重”状态,可以通过NodeManager来自动关闭此服务器并重新启动它。具体请参考:NodeManagerCapa
14、bilities文档。通过启动管理控制台,在域(如:mydomain)服务器server实例(如:myserver)配置调整下可配置下面几项:阻塞线程最长时间:在此服务器将线程诊断为阻塞线程之前,线程必须连续工作的时间长度(秒)。默认情况下,WebLogicServer认为线程在连续工作600秒后成为阻塞线程。阻塞线程计时器间隔:WebLogicServer定期扫描线程以查看它们是否已经连续工作了"阻塞线程最长时间"字段中指定的时间长度的间隔时间(秒)。默认情况下,WebLogicServer将此时间间隔设置为600秒。尽量使用本地IO库WebLogicServer有两套套
15、接字复用器:Java版和本地库。采用小型本地库更有效,尽量激活EnableNative10(默认),此时UNIX默认使用CPUs+1个线程,Window下为双倍CPU。如果系统不能加载本地库,将会抛出此时只能使用Java套接字复用器,可以调整socketreaders百分比,默认为33%。该参数可以在ConsoleServerTuningConfiguration配置栏里设置,配置完,重新启动WebLogicServer即可。hLegging|MrntijrinijCortlhslDep切Serwes|Nt>1.e5|&ter|Kepicr&s£SSL|匚-ep
16、lDmerrt|Tuning|Hsa|-iMantoriinB|RsnotaStai1rni£卿KjlowymutunethyipemrridLricBnjitvBrrue湖珂餉畠PEnat>tfli4atru«IOSpecifierwhelrer"th5f-erverusesnair-eUOBMikiitR«»diri:黑TFu代汕也9扌山曲电9fi1djidjU;iorzAb.dt-thrJsrronfritrduaul:qiJtIfiJ.trigmjy山匕ussikcilrbd-J9TS.(Ifciidllfigb?rti-1i&l
17、t;ithr«3Er>|;3杭;?I90<>kh-iijhttiflCI-a!mwlindC_KatH't-y-ftnin“皆科厲.|.hlikxirequ-jgkMaKlrnljmOp+npiTHsIFiiSnilrllujTinuFnbBFcFtpariSocUIlloradlinBtiliEeriereAagkjenpoirtinHme(bsfeveeti0ohd呂positiw32bli1ntegeH'.AaLisI融怨Sian0indicananuriiniitedlsizAStuckThreadMaaT1m*ipio-«econ
18、dBTM9wnijn::(hnn&(mMcon:!)that刁河站rnusttieccmirualy业】他igixTc-x«ri&serwrdiaijnossGthetlryail殆bei-igluc.巳y1上頃ulWebLdgicServer心onaldlensafread祐be"stuck1Ater600secerKim.刃宀lu&lsc.调整默认执行线程数名称开发模式产品模式推荐个数ExecuteQueues默认的执行线程为15默认的执行线程为25200在管理控制台修改默认执行队列线程数的步骤如下:如果管理服务器没有运行,先启动。访问管理控制台
19、。展开左边面板的Servers节点,显示Server列表。右击Server,在弹出菜单中选择ViewExecuteQueues,就会在右边面板显示有执行队列的表用来修改。注意:你只能修改默认的执行队列或者用户定义的执行队列。在Name列,直接点击默认执行队列名称,显示配置标签用来修改执行队列数。填下适当的线程数。点击Apply,保存刚才的修改。wrrwyupuruun-iLTruij”亠utjl*-jszruprR*>_na_R_?evijr<ir,u|-卜T"vuwirji_jr>ursfit<umjp_-ve_fu_hwt-xiev.>v.e,w_x
20、ui_-Xaux.xuuiimjallm&j/routocontigjrearwr.uMiH/fiRcxoeutofor鹏由withapplicaftOin&的thigterver.ortoMtanmstungmCLJt9quu9.*Nam*:weblogickernel.DefauftTh*-nansolriE.如cuequeu$&OueueLHigrlv邸wTherTwinummmberofEirnAanoanMwvdatirttlriiestmotcanholdinin&qusust基CuteueLenngrhTTiresholdPercent:pi>
21、;"h-pH*erflheDu哥*L叮hthfftcinbereachedbeioreIhi肆wir応k创marowerftowcondrlkonlorlhqunjs&ThreadCount:7?ThenunD«r3m怜odm话冏gwatowaoueu*3hThttMtIncrwsi:厂Thenumberofthra&dla"ItrHr即1和-whencondlionoccurs,畠Thfe*dtMBMUhnuhi:Th-=-iTta>:iinnjrnnumber口fifreadsthatIHeq_wuEcanhave-HisvaLieWef
22、cLcic三frcmcreeiingancwriIhig+iHrsadCDUitinthequEsueinmap二gebtncantanualoverflcmcanditjcns金.Thread?Mlriinyunn;EThairrinlmurnnunnbarofIhnsods,IhfltWetoLoglcSeowidImAlntfllnifiMwcfJHWiiThreadPrioirity:ThisprioriEyoftriez白加曲沖c啦沁训*rws口皿诡,ppp*y重启Server,使新的执行队列设置生效。JDBC调优驱动程序类型选择Oracle提供thin驱动和oci驱动,从性能上来讲
23、,oci驱动强于thin驱动,特别是大数据量的操作。但在简单的数据库操作中,性能相差不大,随着thin驱动的不断改进,这一弱势将得到弥补。而thin驱动的移植性明显强于oci驱动。所以在通常情况下建议使用thin驱动调节连接池初始容量和最大容量JDBCConnectionPool的调优受制于WebLogicServer线程数的设置和数据库进程数,游标的大小。通常我们在一个线程中使用一个连接,所以连接数并不是越多越好,为避免两边的资源消耗,建议设置连接池的最大值等于或者略小于线程数。同时为了减少新建连接的开销,将最IL1CcnftflijriLcn"Tarjet|1nn小值和最大值设为
24、一致;值等于WebLogicServer的执行线程数。Gomra|Connirtwn*Iii'nspd前却烘,磚、ccichhrreconrecrionicrtig试tnsJUbCcm克tD加u(?olInitialCapacity:ThenuntiHf斗口怡阳jc&nn«.;tn:<i$皿师“|q和hi占f:x32-01枕叫11.>?nai>-旳口如chalkg临e.TOconmectKinpgMawvuiM网Thenuimbdror帅阳c*阻l建唱鞘坟rrwcttMg恂能曾的0sod&po-srtiy-3_-u:mcogdr)iMtmif
25、i-JDBC3帕昶nonpodcanconllnCvpacitqIncremenf厂Ttib匚厂mmsnt|tb>iaeriuandapD-sii'/i?2-2-biirrbf8)tywhichIhaJDEa2i:>onr>9匚,onpoal1it/isexpanJ&diSiatemtnECvchvTypi|ulii"V|TViealgaTiihmusedTciirmirtainigpreparedLateTnerrtEcrdin匚aclLKLI即3c?&tiew吐rsiertfy-i_sedwtitmiriErt呂WhensLtemsnls
26、ustdPliiEDkBuprsklwfirstlixednumber口f*513t&rnertsintlffieidche.Stattm«ril!Ca<htSize:ioThenuiWMQfso陪即目rp肿d住刖;出卢in廿a冬利|"Thrrm?iw柯显阳rwprfonrnee)其他配置尽管JDBCConnectionPool提供了很多高级参数,在开发模式下比较有用,但大部分在生产环境下不需调整。这里建议最好不要设置测试表,同时TestReservedConnections和TestReleasedConnections也无需勾上。当然如果你的数据库不稳定,
27、时断时续,你就可能需要上述的参数打开厂TbsICoiriBtkiiri£SpecifieswhetherWekLcgicSeiwrtest:comneztioiibeforegMngitto岀色dient.(YoumustspecifyaT«tTat-lMamarTestCreatedConni&ctionsHl-.Hp-Ih.;Iii-r-r.卩"*:1inr!.iiijI;HIn.-.1-ji|j|j.irh.i-.h<i-ariiavailablei厂th亍pwl(Youmistspecify日TestTableName,、rTestRelea
28、sedConnectionsSps-jfjiiii讷仃tfriusrWsbLoic£s<v*r他卑Ispconned)onbeforereturnngittothsDRCcomn*<:benpool|Youmi-rstspecifyaTestTabte忖wef)WEB调优调整WEB应用描述符WEB应用除代码之外的调优比较简单,仅仅是对一些WEB应用描述符的调整。首先关闭SessionMonitoringEnabled,仅仅在Cluster环境下设置Session复制(优先使用内存复制),在保证应用正常运行的情况下,设置较短的Session超时时间。同时生产环境下无需查看J
29、sp和servlet:JSPPageCheckSec和ServletReloadCheckSecs均设为-1,关闭JSPKeepGenerated和JSPVerbose对性能也有帮助。此外,还可以对jsp进行预编译,有两种方法:激活precompile选项;使用事先编译,建议采用后者。其他调优设置WebLogic文件描述符大小调整首先设置WEB主机系统的ulimit参数为unlimited,然后设置WebLogic中文件描述符的大小。在WL_HOME/bea/weblogic/common/bin中打开文件,修改设置文件描述符大小的指令,将默认的:ulimit-n1024修改为:ulimit-
30、n8192维护管理启动weblogicserver启动管理服务器:执行启动被管理服务器:执行servernameadminurl停止weblogicserver停止被管理服务器:执行servername启动被管理服务器:执行登录和退出管理控制台管理服务器启动后可以在浏览器中登录管理控制台输入URL:,贝U使用https访问管理控制台在弹出的窗口"ConsoleLogin“输入用户名和密码登录性能监控查看性能参数登录控制台后点击Servers-servername-Monitoring-PeformaneelbL-aati!血轻.車押1?75血IM参数分析1) IdleThreads&
31、amp;&QueueLength&&Throughout正常情况下idlethreads>0,queueLength为0,Throughout呈不规则变化曲线,MemoryUsage呈适度频度的锯齿变化曲线。一般来说,对于正常配置的生产环境(线程数50200),如果idlethreads<10,或者呈现不断降低的趋势,就应加以关注;空闲线程数与队列长度通常有如下关系:A、如果空闲线程数>0,贝Uqueuelength=0;B、反之,如果queuelength>0,则空闲线程数=0;2) MemoryUsageMemoryUsage=totalMe
32、mory()freeMemory()内存使用曲线反应了JVMHeap内存使用的变化情况,可以结合其他三个值的变化情况来判断server工作情况;比较理想的状态是适当频度的各种锯齿变化,由于JVMGC多采用“stoptheworld”机制,也就是垃圾回收时其他处理将暂停,过度频繁的GC将明显降低server工作效率和性能表现。Oracle维护OracleDatabase,又名OracleRDBMS或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用
33、于各类大、中、小、微机环境。它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。数据库性能优化Oracle性能管理既是一种艺术,也是一种科学。从实用角度讲,它可以分为两种类型,主动式和被动式性能管理。主动式性能管理涉及到特定系统实施初期的设计和开发,包括硬件选择、性能及容量规划,海量存储系统的选择,I-O子系统配置及优化,以及如何对不同组件进行定制,以满足Oracle数据库和应用系统的复杂要求。被动式性能管理涉及到现有环境中不同组件的性能评估、故障排除和Oracle环境的优化。本文旨在探讨如何进行被动式性能调优,以便为Oracle性能调优提供必要的指导,从而避免仅仅通过反复尝试的方式进行性
34、能调优,提高Oracle性能管理的效率。所以ORACLE数据库性能恶化表现基本上都是用户响应时间比较长,须要用户长时间的等待。获得满意的用户响应时间有两个途径:一是减少系统服务时间,即提高数据库的吞吐量;二是减少用户等待时间,即减少用户访问同一数据库资源的冲突率。对于以上的两个问题,通常我们采用以下几个方面来进行改善:调整服务器内存分配。例如,可以根据数据库运行状况调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小;还可以调整程序全局区(PGA区)的大小。调整硬盘I/O问题,达到I/O负载均衡。调整运用程序结构设计。优化调整操作系统参数和使用资源管理器。SQL优化、诊断la
35、tch竞争、Rollback®ndo)Segment优化、提升block的效率等等。查看Oracle数据库性能查看Oracle数据库性能情况,包含:查看数据库的等待事件,查看死锁及处理,查看cpu、I/O、内存性能,查看是否有僵死进程,查看行链接/迁移,定期做统计分析,查看缓冲区命中率,查看共享池命中率,查看排序区,查看日志ORACLE产品日常运行维护年度服务项目缓冲区,总共十个部分。查看数据库的等待事件setpages80setlines120coleventfora40selectsid,event,p1,p2,p3,WAIT_TIME,SECONDS_IN_WAITfromv$
36、session_waitwhereeventnotlike'SQL%'andeventnotlike'rdbms%'如果数据库长时间持续出现大量像latchfree,enqueue,bufferbusywaits,dbfilesequentialread,dbfilescatteredread等等待事件时,需要对其进行分析,可能存在问题的语句。查看消耗CPU最高的进程SETLINE240SETVERIFYOFFCOLUMNSIDFORMAT999COLUMNPIDFORMAT999COLUMNS_#FORMAT999COLUMNUSERNAMEFORMATA9H
37、EADING"ORAUSER"COLUMNPROGRAMFORMATA29COLUMNSQLFORMATA60COLUMNOSNAMEFORMATA9HEADING"OSUSER"SELECTPID,SID,SPID,USERNAME,OSNAME,#S_#,PROGRAM,RTRIM(SUBSTR,1,80)SQLFROMV$PROCESSV$SESSIONS,V$SQLAREAAWHER=AND=(+)ANDLIKE'%&1%'查看碎片程度高的表SQL>SELECTsegment_nametable_name,COUNT
38、(*)extentsFROMdba_segmentsWHEREownerNOTIN('SYS','SYSTEM')GROUPBYsegment_nameHAVINGCOUNT(*)=(SELECTMAX(COUNT(*)FROMdba_segmentsGROUPBYsegment_name);查看表空间的I/O比例SQL>SELECTNAME,"FILE",PYR,PYW,PBWFROMV$FILESTATF,DBA_DATA_FILESDF#=ORDERBY;查看文件系统的I/O比例SQL>SELECTSUBSTR#,1,2)&
39、quot;#",SUBSTR,1,30)"NAME",FROMV$DATAFILEA,V$FILESTATBWHERE#=#;DiskRead最高的SQL语句的获取SQL>SELECTSQL_TEXTFROM(SELECT*FROMV$SQLAREAORDERBYDISK_READS)WHEREROWNUM<=5desc;查找前十条性能差的sqlSELECT*FROM(SELECTPARSING_USER_IDEXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,SQL_TEXTFROMV$SQLAREAORDERBYDIS
40、K_READSDESC)WHEREROWNUM<10;等待时间最多的5个系统等待事件的获取SELECT*FROM(SELECT*FROMV$SYSTEM_EVENTWHEREEVENTNOTLIKE'SQL%'ORDERBYTOTAL_WAITSDESC)WHEREROWNUM<=5;查看运行很久的SQLCOLUMNUSERNAMEFORMATA12COLUMNOPNAMEFORMATA16COLUMNPROGRESSFORMATA8SELECTUSERNAME,SID,OPNAME,ROUND(SOFAR*100/TOTALWORK,0)|'%'A
41、SPROGRESS,TIME_REMAINING,SQL_TEXTROMV$SESSION_LONGOPS,V$SQLWHERETIME_REMAINING<>0ANDSQL_ADDRESS=ADDRESSANDSQL_HASH_VALUE=HASH_VALUE;查看死锁及处理查询目前锁对象信息:colsidfor999999colusernamefora10colschemanamefora10colosuserfora16colmachinefora16colterminalfora20colownerfora10colobject_namefora30colobject_ty
42、pefora10selectsid,serial#,username,SCHEMANAME,osuser,MACHINE,terminal,PROGRAM,owner,object_name,object_type,fromdba_objectso,v$locked_objectl,v$sessionswhere=and=;oracle级kill掉该session:altersystemkillsession'&;sid,&serial#'操作系统级kill掉session:#>kill-9pid查看数据库cpu、I/O、内存性能记录数据库的cpu使用、I
43、O、内存等使用情况,使用vmstat,iostat,sar,top等命令进行信息收集并查看这些信息,判断资源使用情况。CPU使用情况:rootsale8#toptop-10:29:35up73days,19:54,1user,loadaverage:,:353total,2running,351sleeping,0stopped,0zombieCpu(s):%us,%sy,%ni,%id,%wa,%hi,%siMem:ktotal,kused,3517044kfree,60796kbuffersSwap:8385920ktotal,665576kused,7720344kfree,kcache
44、dPIDUSER30495oracle32501oracle32503oracle注意上面的加粗字体部分,此部分内容表示系统剩余的cpu,当其平均值下降至10%以下的时视为CPU使用率异常,需记录下该数值,并将状态记为异常内存使用情况:#free-mTotalusedfreesharedbufferscachedMem:2026-/+buffers/cache:3261700Swap:5992925900如上所示,total表示系统总内存,used表示系统使用的内存,free表示系统剩余内存,当剩余内存低于总内存的10%时视为异常。系统负载情况:#uptime12:08:37up162days
45、,23:33,15users,loadaverage:,如上所示,loadaverage部分表示系统负载,后面的3个数值如果有高于的时候就表明系统在超负荷运转了,并将此值记录到巡检表,视为异常。查看是否有僵死进程selectspidfromv$processwhereaddrnotin(selectpaddrfromv$session);有些僵尸进程有阻塞其他业务的正常运行,定期杀掉僵尸进程。查看行链接/迁移Sql>selecttable_name,num_rows,chain_cntFromdba_tablesWhereowner='CTAIS2'Andchain_cn
46、t<>0;注:含有longraw列的表有行链接是正常的,找到迁移行保存到chained_rows表中,如没有该表执行./rdbms/admin/Sql>analyzetabletablenamelistchainedrows;可通过表chained_rows中table_name,head_rowid看出哪些行是迁移行如:Sql>createtableaaasselecta.*fromsb_zsxxa,chained_rowsbwhere='SB_ZSXX:sql>deletefromsb_zsxxwhererowidin(selecthead_rowid
47、fromchained_rowswheretable_name='SB_ZSXX');sql>insertintosb_zsxxselect*fromchained_rowwheretable_name='SB_ZSXX'定期做统计分析对于采用OracleCost-Based-Optimizer的系统,需要定期对数据对象的统计信息进行采集更新,使优化器可以根据准备的信息作出正确的explainplan。在以下情况更需要进行统计信息的更新:应用发生变化;大规模数据迁移、历史数据迁出、其他数据的导入等;数据量发生变化。查看表或索引的统计信息是否需更新,如:Sq
48、l>Selecttable_name,num_rows,last_analyzedFromuser_tableswheretable_name='DJ_NSRXX'sql>selectcount(*)fromDJ_NSRXX女口num_rows和count(*)如果行数相差很多,则该表需要更新统计信息,建议一周做一次统计信息收集,如:Sql>exec'CTAIS2',cascade=>TRUE,degree=>4);查看日志缓冲区SQL>selectname,valuefromv$sysstatwherenamein('
49、;redoentries','redobufferallocationretries');如果redobufferallocationretries/redoentries超过1%,则需要增大log_buffer。性能调优及方法性能调优主要有主动调优和被动调优,主动调优在前面我们已经进行了阐述,被动调优主要有以下方法进行。确定合理的性能优化目标测试并记录当前的性能指标确定当前存在的Oracle性能瓶颈(Oracle中何处存在等待,哪个SQL语句与此有关)确定当前的操作系统瓶颈优化相关的组件(应用、数据库、I/O、连接OS及其它)跟踪并实施变化管理制度测试并记录目前的性能
50、指标重复第3到第7步直至达到既定的优化目标不要对并非性能瓶颈的部分进行优化,否则可能引起额外的问题。正如任何聪明的人会告诉你的:“如果还未坏,千万不要修”。更重要的是,一旦既定的优化目标已经达到,就务必停止所有的优化。获取Oracle的性能指标(测试前及测试后)必须在峰值处理时测试并获取系统在优化前和优化后的性能指标。数据采集不应在数据库instance刚刚起动后进行。同时,测试数据应在峰值期间每过15分钟进行一次。初始化参数TIMED_STATISTIC舷该被设为TRUE通过运行以下脚本开始快照:$ORACLE_HOME/rdbms/admin/.通过运行以下脚本结束快照:$ORACLE_H
51、OME/rdbms/admin/.完成操作后,会在当前目录中生成名为“”的文件,包含系统的性能数据。该报告包括每15分钟捕获的所有与Oracle例程相关的参数。寻找问题根源如上所述,通过查看v$system_event事件开始系统事件的问题诊断。下一步是查看v$session_wait获得事CPU内存和10状态SQL代码优化来解决。v$session_event,找出引起或经历等待事件的进程。最后一步是通过件的细节。同时,应该进一步通过0S进行深入分析,了解核心的参数。最后,结合两种不同的诊断的结论,找出系统瓶颈所在。应用优化从统计(和现实)的角度看,80%的0racle系统性能问题可以通过任
52、何应用优化的过程,不外乎是索引优化、全表扫描、并行机制改进和选择正确数据组合方法的过程。这正是要达到最佳应用性能所必须考虑的因素。没有SQL的优化,就无法实现高性能的应用。良好的SQL语句可以减少CPU资源的消耗,提高响应速度。同时,优化后的SQL语句还可以提高应用的可扩展性,这是除增加大量内存外,任何其它硬件手段也无法实现的。I-0优化I-0优化是系统优化中的一个关键步骤,还涉及到其它任务,将文件在不同驱动器/卷中进行分布,采用优化分区技术、确定I-0子系统瓶颈、确定控制器瓶颈并根据应用的类型选择最佳的RAID级。I-0优化应该在全面了解0racle及0racleRDBMS结构之后进行。应该
53、在进行I-0优化前后实施I-0数据监控,如平均服务时间,I0PS平均磁盘队列长度等。0-S监控数据库忙时,应该对操作系统进行监控,因为操作系统的性能指标会揭示数据库活动的性质及其对系统的影响。例如,为了了解CPU的利用率,可以通过systemactivityreporter(sar-uintervalfrequency)、mpstat(SunSolaris),top(多数UNIX)、osview(SGIIrix)及vmstat等命令。Sar和vmstat也可被用于确定包括内存使用率、I-0参数、队列等待、读取/交换区活动等信息。在Solaris上,mpstatutility也可用于获取前面提到
54、的CPU利用率数据。Solaris上的Adrian性能管理工具也很有用。可以利用其中的一到多个工具来确定系统的性能状况,找出可能存在的瓶颈。Oracle数据库性能的管理需要遵循系统的方法论,以确保所有核心问题得以解决。多数问题可以事先得以管理。了解与O-S相关的问题是成功的关键。勿需置疑,系统硬件配置上的良好平衡也是至关重要的。必须承认,80%的系统性能问题可以通过书写更好的SQL语句来解决。来文试图探究其余20%中可能覆盖的内容。同时,必须遵守严格的规定,在调优目标达到后终止所有努力。了解自己想到何处是重要的,更重要的是,要知道自己何时到达了目的地。例程调优需要配置的主要初始化参数以下是一些
55、已知与例程优化关系最密切的一些核心Oracle初始化参数。它们都会影响Oracle及SGA区的活动。任何对这些参数的改动,在实施到生产环境之前,都必须进行测试。一旦改变了生产环境的参数,就必须对相关的Oracle动态性能指标和操作系统的性能进行监测,寻找可能由此产生的异常现象。1)DB_BLOCK_SIZE该参数在数据库建立前设定,决定了数据库中每个数据块的大小。只有重新建立数据库,才有可能改变该参数。db_block_size的配置应遵循以下公式:DB_BLOCK_SIZE=FILESYSTEMBLOCKSIZE>=O-SPAGESI注可以确保Oracle获得最佳I/O性能,同时不会由
56、于冗余或不必要的I/O,给I/O子系统带来压力。2)DB_BLOCK_BUFFERS该参数决定了SGA区数据库缓冲区中的块数量。由于这是Oracle读取和写入的区域,它的不正确配置会引起严重的I/O性能问题。尽管缓冲区的大小与应用性质、数据库大小、同步用户数等无关,它的确是SGA区中最大的组件。经常可以看到缓冲区占用75-80%SGA区内存的情况。另外,这一参数设置过大,也会引起整个系统的内存不足,引起操作系统过多的读写操作。该参数及SHARED_POOL_SIZE通常是两个最重要的SGA优化目标。只有当数据库缓冲率长时间低于70%时,才需要增加其大小说。即使在这种情况下,也需要进一步审查应用
57、的性能和整个系统的吞吐性。若存在延迟性的应用设计问题,则无论数据库缓冲区的大小如何,缓冲和读写率都不会有太大改变为。在实调优中,也曾发现由于SQL语句的问题,出现缓冲率很高,但仍存在全系统性能问题的情况。3)SHARED_POOL_SIZE该参数按字节数设定,定义了SGA中共享区的大小。该组件的大小严重依赖于应用的类型(即该应用是重用SQL还是生成动态SQL等等)。同时它也取决于同步用户的数量,以及实例是否被配置成支持多线程服务器(MTS)。如果该应用采用了MTS配置,则共享区应该明显增加,因为光标状态和用户进程数据等程序全局区域(PGA)都被置入了共享区。有关多数应用的SHARED_POOL
58、_SIZE小设置,可以从每10个同步用户16MB共享区开始。这不是一成不变的,因为应用的性质最终会决定该组件的大小。只有当库缓冲和字典缓冲使用率一直低于90%时,才需要关注这一参数。但如果应用并未采用变量合并和/共离图标时,内存的数量并不会使缓冲使用率高于90%。共享区过大会导致处理时间增加,甚至SQL语句的挂起。如果应用不能有效地重用SQL,则无论配置多大的库缓冲或字典缓冲都无济于事,不能改善缓冲使用率。另一个值得考虑的因素是需要随时使用的存储PL/SQL代码数量。应用的核心包可以通过查看DBA_SOURCEUSER_SOURCE得以确认,其大小通过查询DBA_OBJECT_SIZET解。另外,为了确定存储PL/SQL是否被置于内存,可以查询动态性能视图V$DB_OBJECT_SIZ。内时,包DBMS_SHARED_PO0冲的程序大
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐厅员工基本培训内容
- 汽车吊装作业专项安全方案
- 钢结构房屋施工方案编制指南
- 屋面防水补漏施工管理
- 施工方案编制的基本内容要求规范
- 清洁能源汽车产业价值链收益分布研究
- 数据资产托管机制及其增值服务路径研究
- 传统制造企业智能化升级实施路径研究
- 人工智能安全监管挑战
- 保险AI系统安全审计机制设计
- 储能电站消防安全培训
- 内蒙古电力建设定额站2025年第二季度配电网设备材料编审指导价
- 2000年山东省青岛市中考数学试题【含答案解析】
- 全媒体运营师职业技能竞赛题(附答案)
- DB65╱T 3285-2011 防雷装置检测技术规范
- 车位抵账合同协议
- 医院临床医学带教老师培训
- 人教版八年级数学上册轴对称《最短路径问题》 教学课件
- 2022年CSCO软组织肉瘤诊疗指南
- 220kV变电站电气设备常规交接试验方案
- 除艾滋病、梅毒和乙肝母婴传播评估指标解释
评论
0/150
提交评论