




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、軟件項目維護方案1.項目背景及目標項目背景在國家政策的指導和幫助下,信息化也越來越發揮出十分重要的作用。XXXX不斷加大信息化管理工作力度,積極實施“上網工程”,大力推進全市局域網建精品文檔,你值得期待設,加快辦公自動化系統進程,信息技術在改革中發揮了重要的支撐作用,為充分發揮政府公共職能,促進依法理財、科學理財,提供了重要的信息技術保障。近年來建設各系統隨著數據量的逐年增加,陸續出現了性能問題,有必要進行數據庫系統的升級及性能優化,以確保應用系統的正常運行,為單位員工提供更好的信息服務。項目目標對各系統數據庫進行補丁升級服務,安裝補丁前制定詳細的升級計劃和應急回退計劃。完成各系統數據庫的性能
2、調優工作。各業務持續性得到有效的保證。2.需求分析XXXXXXX項目,我公司有多年的行業經驗。具有對運維服務對象進行適時監測、指標分析、和及時修復的能力。Oracle產品日常運行維護項目主要從如下幾個方面進行:(1).每天對ORACLE數據庫的運行狀態,日志文件,備份情況,數據庫的空間使用情況,系統資源的使用情況進行查看,發現并解決問題。.每周對數據庫對象的空間擴展情況,數據的增長情況進行監控,對數據庫做健康查看,對數據庫對象的狀態做查看。.查看表空間碎片,提出下一步空間管理計劃。對ORACLE數據庫狀態進行一次全面查看。由于這些數據庫系統承載著XXXX非常重要的業務系統數據,所以在日常維護中
3、需要非常仔細,每周、每月、每季都需要有相應的巡檢記錄,需要詳細記載以下一些內容:監控數據庫對象的空間擴展情況監控數據量的增長情況系統健康查看,查看以下內容:數據庫對象有效性查看查看是否有危害到安全策略的問題。查看alert、Sqlnet等日志并歸檔報錯日志分析表和索引查看對數據庫會產生危害的增長速度查看表空間碎片數據庫性能調整預測數據庫將來的性能調整和維護工作后續空間整體運行維護服務方案Lifekeeper維護驗證LifeKeeper的安裝查看已經安裝的LifeKeeper軟件包,可以使用命令rpm一qa|grepstee啟動LifeKeepera)啟動LifeKeeper服務器進程如果當前您
4、的系統沒有運行LifeKeeper則在所有服務器上以root用戶身份輸入如下命令/opt/LifeKeeper/bin/lkstartb)啟動LifeKeeperGUI服務器進程同樣以root用戶運行命令/opt/LifeKeeper/bin/IkGUIserverstart注意:以上命令只需運行一次,以后每次系統重新啟動時,LifeKeeper會自動運行上述進程313有關的LifeKeeper軟件的其它管理任務停止LifeKeeper服務如果需要在服務器上永久停止LifeKeeper服務,可以輸入下列命令$LKROOT/bin/lkstop該命令同時會使所有LifeKeeper保護的資源處于
5、退出服務狀態,如果希望在停止LifeKeeper時保持資源/應用的運行,可以使用:$LKROOT/bin/lkstop-f查看LifeKeeper進程鍵入下列命令可以查看當前運行的所有LifeKeeper進程列表ps-ef|grepLifeKeeper啟動LifeKeeperGUI配置工具進入LifeKeeperGUI管理工具可以通過運行命令:/opt/LifeKeeper/bin/lkGUIapp則出現LifeKeeper登錄界面:-ln|EServerNameFileEditViewHelpCItletmrCoimectrootuickStart.DK.Cancel-ln|EServerN
6、ameFileEditViewHelpCItletmrCoimectrootuickStart.DK.CancelHml口Password可以使用root用戶登錄,也可以使用新建的用戶進行登錄。3.1.5.檢測LifeKeeper集群運行狀態可以使用lcdstatus命令對LifeKeeper集群的當前運行狀態進行查看,命令格式:Icdstatus-q-d主機名該程序向stdout輸出在LifeKeeper資源層次配置狀態和通信路徑的狀態.選項-q表示輸出采用簡略的形式(建議使用該選項)選項-d表示要查看的主機,缺X查看本機3.1.6.管理LifeKeeper中的資源注意:如果能運行LifeK
7、eeperGUI,則使用其提供菜單命令執行相應操作;在執行命令行啟動/停止資源前,一定先使用Icdstatus命令確認資源的實際狀態。a)啟用資源(In-Service)可以使用命令:./perform_action-t服務器server實例(如:myserver)ExecuteQueueweblogic.kernel.Defalt配置下面幾項:隊列長度:此值表示執行隊列中可容納的最大請求數,默認值是65536,最后不要手動改變此值。隊列長度閾值百分比:此值表示溢出條件,在此服務器指出隊列溢出之前可以達到的隊列長度大小的百分比。線程數增加:當檢測到溢出條件時,將增加到執行隊列中的線程數量。如果
8、CPU和內存不是足夠的高,盡量不要改變默認值“0”。因為Weblogic一旦增加后不會自動縮減,雖然最終可能確實起到了降低請求的作用,但在將來的運行中將影響程序的性能。最大線程數:為了防止創建過多的線程數量,可以通過設定最大的線程數進行控制。在實際的應用場景中,應根據具體情況適當的調整以上參數。設定隊列監測行為WeblogicServer能夠自動監測到當一個執行線程變為“阻塞”。變為“阻塞”狀態的執行線程將無法完成當前的工作,也無法再執行新請求。如果執行隊列中的所有執行線程都變為“阻塞”狀態,Weblogicserver可能改變狀態為“警告”或“嚴重”狀態。如果Weblogicserver變為
9、“嚴重”狀態,可以通過NodeManager來自動關閉此服務器并重新啟動它。具體請參考:NodeManagerCapabilities文檔。通過啟動管理控制臺,在域(如:mydomain)服務器server實例(如:myserver)配置調整下可配置下面幾項:阻塞線程最長時間:在此服務器將線程診斷為阻塞線程之前,線程必須連續工作的時間長度(秒)。默認情況下,WebLogicServer認為線程在連續工作600秒后成為阻塞線程。阻塞線程計時器間隔:WebLogicServer定期掃描線程以查看它們是否已經連續工作了阻塞線程最長時間字段中指定的時間長度的間隔時間(秒)。默認情況下WebLogicS
10、erver將此時間間隔設置為600秒。33121盡量使用本地10庫WebLogicServer有兩套套接字復用器:Java版和本地庫。采用小型本地庫更有效,盡量激活EnableNative10(默認),此時UNIX默認使用CPUs+1個線程,Window下為雙倍CPU。如果系統不能加載本地庫,將會拋出java.lang.UnsatisfiedLinkException,此時只能使用Java套接字復用器,可以調整socketreaders百分比,默認為33%。該參數可以在ConsoleServerTuningConfiguration配置欄里設置,配置完,重新啟動WebLogicServer即可
11、。3簡列*1加3簡列*1加Protocola|Logging|MonitoringC:DepbrrmlB|Service|N(ies|Genersi|CluBe1Keysto-esSSL|Deployrrent|Tuning|HesIHnMonitoringRemdeStartThispfljealamycutoluretheperformanceandLncbonflliofthussaner也I?BnsblEMat-eIOspociHsifisuk-s門旳心I/O.客Rflidirs:55一Thepsrc&ntaqe1and99)ofexecutethreadsfrornlhedefaul
12、tqi_Ejethatthisestuemayussassocketresrsij.AJticsbngeccecutetTreadtoact日esaclstreaderthreadsincre日保spet-dandIreabilityufthes&rvertasczeptclient:requests.IM日xtanumOpenSockets:Theeswelienumtierofopensacksisallurtiadinihisaiqi-npoirtinbme(behienDandapos止艸歸32-bitmt&jer).AvalueI白thanDindicates塑iLrilniitHd
13、size.生StuckTltreadMasTimfl:麗LsoridBTlietengitiofBme(insecorgtajthatathreadmustbecsTlinualymrkingteforefrisserverdiagnosesthethresad胡beingstuckByactefeult,W)LogicSerrccnaideraaIhreadtotestuck1aftsr600seccrrisofccnlinuousise.2.調整默認執行線程數名稱開發模式產品模式推薦個數ExecuteQueues默認的執行線程為15默認的執行線程為25200在管理控制臺修改默認執行隊列線程
14、數的步驟如下:如果管理服務器沒有運行,先啟動。訪問管理控制臺。展開左邊面板的Servers節點,顯示Server列表。右擊Server,在彈出菜單中選擇ViewExecuteQueues,就會在右邊面板顯示有執行隊列的表用來修改。注意:你只能修改默認的執行隊列或者用戶定義的執行隊列。在Name列,直接點擊默認執行隊列名稱,顯示配置標簽用來修改執行隊列數。填下適當的線程數。點擊Apply,保存剛才的修改。JUUUIIIILJIL-UUUILIUIIUILUkrUULkrki|UUUlr-JUlIMILJppilkrUUUIJLUU11.IVkrUU|J|Jllk-UUUlIJUlIUIMillU
15、UJLULJUJUnUUlUe.!.FA1LLLJ.UJL1UU1I.IIII閣日albwsyoutoconfijranm,user-definedqueu9fcruebwith沖臼icatenEoniliisseiw匚toeditanmsting瞬cut竊quei.bMarn*jw-eblogic.kernel.DefaultThensmeofthigcutequ9u.岔OueueLengrli:岡莎Thema?:lmjrnnumberofsimuHaneousrequeetethstlhscaiholdinthequeue也OueueLengthThresliiDkiPercent:網Th
16、eperEentagAoftheQueu?LengthszethatcanbereachedbeforethsserverindicsiBEanoverfbwccndibonforthequ?ueTOC o 1-5 h z摳ThreadCount:序Thununberortnr&adsassignedtomisquuy.血Thr*d:$irw:r*?$+:Theniniberofttireadstoteaddedto11queueshenanaverfiocondlicnoccirs.也Thr*tlMsxirpum:poThemawimurnnumberofHte日生thadthisiqueu
17、ecanhave,thisvaluepreventsWsbLogicServerfrcmcrealinganoverlyhighIhreadcountinth?queuinreapcnEetacantinualOTerflmconditicns也ThresidsMinimum:5Therrtnlmumnumt=irorUirezlEmatWetLoglcSeRerImaintainInIhequeue摳ThreadPriarity:_Thuprioriiyorthetrw的dGsocKud訕山truequuus.A卩旳重啟Server,使新的執行隊列設置生效。JDBC調優.1.驅動程序類型選擇
18、Oracle提供thin驅動和oci驅動,從性能上來講,oci驅動強于thin驅動,特別是大數據量的操作。但在簡單的數據庫操作中,性能相差不大,隨著thin驅動的不斷改進,這一弱勢將得到彌補。而thin驅動的移植性明顯強于oci驅動。所以在通常情況下建議使用thin驅動.2.調節連接池初始容量和最大容量JDBCConnectionPool的調優受制于WebLogicServer線程數的設置和數據庫進程數,游標的大小。通常我們在一個線程中使用一個連接,所以連接數并不是越多越好,為避免兩邊的資源消耗,建議設置連接池的最大值等于或者略小于線程數。同時為了減少新建連接的開銷,將最小值和最大值設為一致;
19、值等于WebLogicServer的執行線程數。Uonnwr載泊町TarijetarriUonnwr載泊町Tarijetarri|Monitgrig|ControlTewiirg|NotrIGeneral|CiDniHctiDnsmispageaikMBycutsdenns曠原connexionccrfiguraoonormsJDKcanecucnpoohTOC o 1-5 h zInitialCapaclly;:両Thenumtierofphysicddatabaconnectionsbeb/en0and曰positruis32-bitindegsrtocreatewhencreelingt
20、hisJC8Ccannec-tionpedrJKimtiiTiCapacity:gTheesmeuenumterofpnyacaldstatcSEeccmecbcinE詬日口0andaposibveS2-ttinteger)1hsttniEJCSCconnectionpodcancontainCapaniiitykicrfm&nft:pTheincryrrifilu呂哉Ia32-bltml巴第)i了mwhn:ri曲厲XK:nnHCi)onpuijlGcai::ity厲r叩ex峪IiStatementCa-cheTyp:pijThuaigijninm3總也formairtamiriatn百pr&
21、pardataLurrntsshxtidinach.LEUr&piatusthu宙自賀快就usd$ldtemrtsrthynn曲stuirtfitsareused,fixedkuypstnefirstH胡numberor曲剜沁intnucache.軌蜀Csth*Sil*:fi5Thenumtierofprepar&jandcaltatifestatenertsstoredinfrecache|Thi5rnayincrease5RierperfurrrancB)其他配置盡管JDBCConnectionPool提供了很多高級參數,在開發模式下比較有用,但大部分在生產環境下不需調整。這里建議最好不要
22、設置測試表,同時TestReservedConnections和TestReleasedConnections也無需勾上。當然如果你的數據庫不穩定,時斷時續,你就可能需要上述的參數打開廠TestRosarvfldCorjriflctionsSpecificswhetherWebLogicSan/ertesteaconnectonbeforegivingittothedient(YoumutspecifyaTestTableNamebelow.)廠TestCreat&dConhectidnsSpscifiaswhetherWebLogicSanrtesteaconnEMionaftercreat
23、ingitbutb&forsaddingittothelistofconnsctions日船ll血18inthepool.YoumustspeciryaTestTableName.)廠TestReleasedCohiniertlonBSpecifieswriotherVVebLogicSan/ertesteaconnwclicinbeforereturningittotrieJDBCconnectonpoolYoumustspecifyaTestTableName).WEB調優331.4.1.調整WEB應用描述符WEB應用除代碼之外的調優比較簡單,僅僅是對一些WEB應用描述符的調整。首先關閉S
24、essionMonitoringEnabled,僅僅在Cluster環境下設置Session復制(優先使用內存復制),在保證應用正常運行的情況下,設置較短的Session超時時間。同時生產環境下無需查看Jsp和servlet:JSPPageCheckSecs和ServletReloadCheckSecs均設為-1,關閉JSPKeepGenerated和JSPVerbose對性能也有幫助。此外,還可以對jsp進行預編譯,有兩種方法:激活precompile選項;使用weblogic.appc事先編譯,建議采用后者。.其他調優設置.1.WebLogic文件描述符大小調整首先設置WEB主機系統的ul
25、imit參數為unlimited,然后設置WebLogic中文件描述符的大小。在WL_HOME/bea/weblogic/common/bin中打開文件commEnv.sh,修改設置文件描述符大小的指令,將默認的:ulimit-n1024修改為:ulimit-n81923.3.2.維護管理啟動weblogicserver啟動管理服務器:執行startAdmserver.sh啟動被管理服務器:執行startManagedWebLogic.shservernameadminurl停止weblogicserver停止被管理服務器:執行stopWebLogic.shservername啟動被管理服務器
26、:執行stopWebLogic.sh.登錄和退出管理控制臺管理服務器啟動后可以在瀏覽器中登錄管理控制臺輸入URL:http:/hostname:port/console或https:/hostname:port/consolehostname:管理服務器的ip地址或DNS名port:管理服務器監聽的端口如果管理服務器啟動時使用SSL,則使用https訪問管理控制臺在彈出的窗口“ConsoleLogin中輸入用戶名和密碼登錄3324性能監控查看性能參數登錄控制臺后點擊Servers-servername-Monitoring-Performaneeierriemail二J曲般巧11kEwpkhT
27、iinjEOTgia曲日鈾町n山ierriemail二J曲般巧11kEwpkhTiinjEOTgia曲日鈾町n山5*q巴?看si首|CwwikimJid.JM1Z7S7911Iw-s*!as-.|bMtwiUanrinalnpi|PnctgatiJPwrlofiBHna*|gLwlrslTba:psiEbrfMrrKnjki:Iboiiiyw,Th*runbardndkItvuda吟redInIhaqLHaaOktaBMon陽212225:1RGMH滋KSMWThe45HixJilmthsi怯lappe曲i帥啊jesihpiaetNlbdieuwej負發尊廉皺咚蕃縄藝議啟ITwiNfjWsdw
28、diim沖事沖11UNqidifi!M&Morrin曲a:M&Morrin曲a:Thaajnnij*nau0,queueLength為0,Throughout呈不規則變化曲線,MemoryUsage呈適度頻度的鋸齒變化曲線。一般來說,對于正常配置的生產環境(線程數50200),如果idlethreads0,則queuelength=0;B、反之,如果queuelength0,則空閑線程數=0;MemoryUsageMemoryUsage=totalMemory()freeMemory()內存使用曲線反應了JVMHeap內存使用的變化情況,可以結合其他三個值的變化情況來判斷server工作情況;
29、比較理想的狀態是適當頻度的各種鋸齒變化,由于JVMGC多采用stoptheworld”機制,也就是垃圾回收時其他處理將暫停,過度頻繁的GC將明顯降低server工作效率和性能表現。Oracle維護OracleDatabase,又名OracleRDBMS,或簡稱Oracle。是甲骨文公司的一款關系數據庫管理系統。它是在數據庫領域一直處于領先地位的產品。可以說Oracle數據庫系統是目前世界上流行的關系數據庫管理系統,系統可移植性好、使用方便、功能強,適用于各類大、中、小、微機環境。它是一種高效率、可靠性好的適應高吞吐量的數據庫解決方案。3.4.1.數據庫性能優化Oracle性能管理既是一種藝術,
30、也是一種科學。從實用角度講,它可以分為兩種類型,主動式和被動式性能管理。主動式性能管理涉及到特定系統實施初期的設計和開發,包括硬件選擇、性能及容量規劃,海量存儲系統的選擇,I-O子系統配置及優化,以及如何對不同組件進行定制,以滿足Oracle數據庫和應用系統的復雜要求。被動式性能管理涉及到現有環境中不同組件的性能評估、故障排除和Oracle環境的優化。本文旨在探討如何進行被動式性能調優,以便為Oracle性能調優提供必要的指導,從而避免僅僅通過反復嘗試的方式進行性能調優,提高Oracle性能管理的效率。所以ORACLE數據庫性能惡化表現基本上都是用戶響應時間比較長,須要用戶長時間的等待。獲得滿
31、意的用戶響應時間有兩個途徑:一是減少系統服務時間,即提高數據庫的吞吐量;二是減少用戶等待時間,即減少用戶訪問同一數據庫資源的沖突率。對于以上的兩個問題,通常我們采用以下幾個方面來進行改善:調整服務器內存分配。例如,可以根據數據庫運行狀況調整數據庫系統全局區(SGA區)的數據緩沖區、日志緩沖區和共享池的大小;還可以調整程序全局區(PGA區)的大小。調整硬盤I/O問題,達到I/O負載均衡。調整運用程序結構設計。優化調整操作系統參數和使用資源管理器。SQL優化、診斷latch競爭、Rollback(undo)Segment優化、提升block的效3411査看Oracle數據庫性能查看Oracle數據
32、庫性能情況,包含:查看數據庫的等待事件,查看死鎖及處理,查看cpu、I/O、內存性能,查看是否有僵死進程,查看行鏈接/遷移,定期做統計分析,查看緩沖區命中率,查看共享池命中率,查看排序區,查看日志ORACLE產品日常運行維護年度服務項目緩沖區,總共十個部分。.1.查看數據庫的等待事件setpages80setlines120coleventfora40selectsid,event,p1,p2,p3,WAIT_TIME,SECONDS_IN_WAITfromv$session_waitwhereeventnotlikeSQL%andeventnotlikerdbms%;如果數據庫長時間持續出現
33、大量像latchfree,enqueue,bufferbusywaits,dbfilesequentialread,dbfilescatteredread等等待事件時,需要對其進行分析,可能存在問題的語句。3.4.112查看消耗CPU最高的進程SETLINE240SETVERIFYOFFCOLUMNSIDFORMAT999COLUMNPIDFORMAT999COLUMNS_#FORMAT999COLUMNUSERNAMEFORMATA9HEADINGORAUSERCOLUMNPROGRAMFORMATA29COLUMNSQLFORMATA60COLUMNOSNAMEFORMATA9HEADIN
34、GOSUSERSELECTP.PIDPID,S.SIDSID,P.SPIDSPID,S.USERNAMEUSERNAME,S.OSUSEROSNAME,P.SERIAL#S_#,P.TERMINAL,PPROGRAMPROGRAM,P.BACKGROUND,S.STATUS,RTRIM(SUBSTR(A.SQL_TEXT,1,80)SQLFROMV$PROCESSP,V$SESSIONS,V$SQLAREAAWHEREP.ADDR=S.PADDRANDS.SQL_ADDRESS=A.ADDRESS(+)ANDP.SPIDLIKE%&1%;查看碎片程度高的表SQLSELECTsegment_na
35、metable_name,COUNT(*)extentsFROMdba_segmentsWHEREownerNOTIN(SYS,SYSTEM)GROUPBYsegment_nameHAVINGCOUNT(*)=(SELECTMAX(COUNT(*)FROMdba_segmentsGROUPBYsegment_name);查看表空間的I/O比例SQLSELECTDF.TABLESPACE_NAMENAME,DF.FILE_NAMEFILE,F.PHYRDSPYR,F.PHYBLKRDPBR,F.PHYWRTSPYW,F.PHYBLKWRTPBWFROMV$FILESTATF,DBA_DATA_F
36、ILESDFWHEREF.FILE#=DF.FILE_IDORDERBYDF.TABLESPACE_NAME;.5.查看文件系統的I/O比例SQLSELECTSUBSTR(A.FILE#,1,2)#,SUBSTR(A.NAME,1,30)NAME,A.STATUS,A.BYTES,B.PHYRDS,B.PHYWRTSFROMV$DATAFILEA,V$FILESTATBWHEREA.FILE#=B.FILE#;3.4.116DiskRead最高的SQL語句的獲取SQLSELECTSQL_TEXTFROM(SELECT*FROMV$SQLAREAORDERBYDISK_READS)WHERER0
37、WNUMv=5desc;.7.查找前十條性能差的sqlSELECT*FROM(SELECTPARSING_USER_IDEXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,SQL_TEXTFROMV$SQLAREAORDERBYDISK_READSDESC)WHEREROWNUMV10;34118等待時間最多的5個系統等待事件的獲取SELECT*FROM(SELECT*FROMV$SYSTEM_EVENTWHEREEVENTNOTLIKESQL%ORDERBYTOTAL_WAITSDESC)WHEREROWNUM=5;.9.查看運行很久的SQLCOLUMNUSER
38、NAMEFORMATA12COLUMNOPNAMEFORMATA16COLUMNPROGRESSFORMATA8SELECTUSERNAME,SID,OPNAME,ROUND(SOFAR*100/TOTALWORK,0)|%ASPROGRESS,TIME_REMAINING,SQL_TEXTFROMV$SESSION_LONGOPS,V$SQLWHERETIME_REMAINING0ANDSQL_ADDRESS=ADDRESSANDSQL_HASH_VALUE=HASH_VALUE;.10.查看死鎖及處理查詢目前鎖對象信息:colsidfor999999colusernamefora10col
39、schemanamefora10colosuserfora16colmachinefora16colterminalfora20colownerfora10colobject_namefora30colobject_typefora10selectsid,serial#,username,SCHEMANAME,osuser,MACHINE,terminal,PROGRAM,owner,object_name,object_type,o.object_idfromdba_objectso,v$locked_objectl,v$sessionswhereo.object_id=l.objectt_
40、idands.sid=l.session_id;oracle級kill掉該session:altersystemkillsession&sid,&serial#;操作系統級kill掉session:#kill-9pid3.4.1111.查看數據庫叩u、I/O、內存性能記錄數據庫的cpu使用、IO、內存等使用情況,使用vmstat,iostat,sar,top等命令進行信息收集并查看這些信息,判斷資源使用情況。CPU使用情況:rootsale8#toptop-10:29:35up73days,19:54,1user,loadaverage:0.37,0.38,0.29Tasks:353total
41、,2running,351sleeping,0stopped,0zombieCpu(s):1.2%us,0.1%sy,0.0%ni,98.8%ij0.0%wa,0.0%hi,0.0%siMem:16404472ktotal,12887428kused,3517044kfree,60796kbuffersSwap:8385920ktotal,665576kused,7720344kfree,10358384kcachedPIDUSER30495oracle32501oracle32503oracle注意上面的加粗字體部分,此部分內容表示系統剩余的cpu,當其平均值下降至10%以下的時視為CPU使
42、用率異常,需記錄下該數值,并將狀態記為異常內存使用情況:#free-mTotalusedfreesharedbufferscachedMem:20261958670761556-/+buffers/cache:3261700Swap:5992925900如上所示,total表示系統總內存,used表示系統使用的內存,free表示系統剩余內存,當剩余內存低于總內存的10%時視為異常。系統負載情況:#uptime12:08:37up162days,23:33,15users,loadaverage:0.01,0.15,0.10如上所示,loadaverage部分表示系統負載,后面的3個數值如果有高
43、于2.5的時候就表明系統在超負荷運轉了,并將此值記錄到巡檢表,視為異常。.12.查看是否有僵死進程selectspidfromv$processwhereaddrnotin(selectpaddrfromv$session);有些僵尸進程有阻塞其他業務的正常運行,定期殺掉僵尸進程。.13.查看行鏈接/遷移Sqlselecttable_name,num_rows,chain_cntFromdba_tablesWhereowner=CTAIS2Andchain_cnt0;注:含有longraw列的表有行鏈接是正常的,找到遷移行保存到chained_rows表中,如沒有該表執行./rdbms/adm
44、in/utlchain.sqlSqlanalyzetabletablenamelistchainedrows;可通過表chained_rows中table_name,head_rowid看出哪些行是遷移行如:Sqlcreatetableaaasselecta.*fromsb_zsxxa,chained_rowsbwherea.rowid=b.head_rowidandb.table_name=SB_ZSXX;sqldeletefromsb_zsxxwhererowidin(selecthead_rowidfromchained_rowswheretable_name=SB_ZSXX);sqli
45、nsertintosb_zsxxselect*fromchained_rowwheretable_name=SB_ZSXX;.14.定期做統計分析對于采用OracleCost-Based-Optimizer的系統,需要定期對數據對象的統計信息進行采集更新,使優化器可以根據準備的信息作出正確的explainplan。在以下情況更需要進行統計信息的更新:應用發生變化;大規模數據遷移、歷史數據遷出、其他數據的導入等;數據量發生變化。查看表或索引的統計信息是否需更新,如:SqlSelecttable_name,num_rows,last_analyzedFromuser_tableswheretabl
46、e_name=DJ_NSRXXsqlselectcount(*)fromDJ_NSRXX女口num_rows和count(*)如果行數相差很多,則該表需要更新統計信息,建議一周做一次統計信息收集,如:Sqlexecsys.dbms_stats.gather_schema_stats(ownname=CTAIS2,cascade=TRUE,degree=4);.15.查看日志緩沖區SQLselectname,valuefromv$sysstatwherenamein(redoentries,redobufferallocationretries);如果redobufferallocationre
47、tries/redoentries超過1%,則需要增大log_buffer。.性能調優及方法性能調優主要有主動調優和被動調優,主動調優在前面我們已經進行了闡述,被動調優主要有以下方法進行。確定合理的性能優化目標測試并記錄當前的性能指標確定當前存在的Oracle性能瓶頸(Oracle中何處存在等待,哪個SQL語句與此有關)確定當前的操作系統瓶頸優化相關的組件(應用、數據庫、I/O、連接OS及其它)跟蹤并實施變化管理制度測試并記錄目前的性能指標重復第3到第7步直至達到既定的優化目標不要對并非性能瓶頸的部分進行優化,否則可能引起額外的問題。正如任何聰明的人會告訴你的:“如果還未壞,千萬不要修”。更重
48、要的是,一旦既定的優化目標已經達到,就務必停止所有的優化。獲取Oracle的性能指標(測試前及測試后)必須在峰值處理時測試并獲取系統在優化前和優化后的性能指標。數據采集不應在數據庫instance剛剛起動后進行。同時,測試數據應在峰值期間每過15分鐘進行一次。初始化參數TIMED_STATISTICS應該被設為TRUE。通過運行以下腳本開始快照:$ORACLE_HOME/rdbms/admin/utlbstat.sql.通過運行以下腳本結束快照:$ORACLE_HOME/rdbms/admin/utlestat.sql.完成utlestat.sql操作后,會在當前目錄中生成名為“report.
49、txt的文件,包含系統的性能數據。該報告包括每15分鐘捕獲的所有與Oracle例程相關的參數.1.尋找問題根源如上所述,通過查看v$system_event事件開始系統事件的問題診斷。下一步是查看v$session_event,找出引起或經歷等待事件的進程。最后一步是通過v$session_wait獲得事件的細節。同時,應該進一步通過OS進行深入分析,了解核心的CPU、內存和10狀態參數。最后,結合兩種不同的診斷的結論,找出系統瓶頸所在。應用優化從統計(和現實)的角度看,80%的0racle系統性能問題可以通過SQL代碼優化來解決。任何應用優化的過程,不外乎是索引優化、全表掃描、并行機制改進和
50、選擇正確數據組合方法的過程。這正是要達到最佳應用性能所必須考慮的因素沒有SQL的優化,就無法實現高性能的應用。良好的SQL語句可以減少CPU資源的消耗,提高響應速度。同時,優化后的SQL語句還可以提高應用的可擴展性,這是除增加大量內存外,任何其它硬件手段也無法實現的。I-O優化I-0優化是系統優化中的一個關鍵步驟,還涉及到其它任務,將文件在不同驅動器/卷中進行分布,采用優化分區技術、確定I-0子系統瓶頸、確定控制器瓶頸并根據應用的類型選擇最佳的RAID級。I-0優化應該在全面了解0racle及OracleRDBMS結構之后進行。應該在進行I-O優化前后實施I-O數據監控,如平均服務時間,IOP
51、S,平均磁盤隊列長度等。O-S監控數據庫忙時,應該對操作系統進行監控,因為操作系統的性能指標會揭示數據庫活動的性質及其對系統的影響。例如,為了了解CPU的利用率,可以通過systemactivityreporter(sar一uintervalfrequency)、mpstat(SunSolaris),top(多數UNIX)、osview(SGIIrix)及vmstat等命令。Sar和vmstat也可被用于確定包括內存使用率、I-O參數、隊列等待、讀取/交換區活動等信息。在Solaris上,mpstatutility也可用于獲取前面提到的CPU利用率數據。Solaris上的Adrian性能管理工
52、具也很有用。可以利用其中的一到多個工具來確定系統的性能狀況,找出可能存在的瓶頸。Oracle數據庫性能的管理需要遵循系統的方法論,以確保所有核心問題得以解決。多數問題可以事先得以管理。了解與O-S相關的問題是成功的關鍵。勿需置疑,系統硬件配置上的良好平衡也是至關重要的。必須承認,80%的系統性能問題可以通過書寫更好的SQL語句來解決。來文試圖探究其余20%中可能覆蓋的內容。同時,必須遵守嚴格的規定,在調優目標達到后終止所有努力。了解自己想到何處是重要的,更重要的是,要知道自己何時到達了目的地。例程調優需要配置的主要初始化參數以下是一些已知與例程優化關系最密切的一些核心Oracle初始化參數。它
53、們都會影響Oracle及SGA區的活動。任何對這些參數的改動,在實施到生產環境之前,都必須進行測試。一旦改變了生產環境的參數,就必須對相關的Oracle動態性能指標和操作系統的性能進行監測,尋找可能由此產生的異常現象。DB_BLOCK_SIZE該參數在數據庫建立前設定,決定了數據庫中每個數據塊的大小。只有重新建立數據庫,才有可能改變該參數。db_block_size的配置應遵循以下公式:DB_BLOCK_SIZE=FILESYSTEMBLOCKSIZE=O-SPAGESIZE這可以確保Oracle獲得最佳I/O性能,同時不會由于冗余或不必要的1/0,給I/O子系統帶來壓力。DB_BLOCK_B
54、UFFERS該參數決定了SGA區數據庫緩沖區中的塊數量。由于這是Oracle讀取和寫入的區域,它的不正確配置會引起嚴重的I/O性能問題。盡管緩沖區的大小與應用性質、數據庫大小、同步用戶數等無關,它的確是SGA區中最大的組件。經常可以看到緩沖區占用75-80%SGA區內存的情況。另外,這一參數設置過大,也會引起整個系統的內存不足,引起操作系統過多的讀寫操作。該參數及SHARED_POOL_SIZE通常是兩個最重要的SGA優化目標。只有當數據庫緩沖率長時間低于70%時,才需要增加其大小說。即使在這種情況下,也需要進一步審查應用的性能和整個系統的吞吐性。若存在延遲性的應用設計問題,則無論數據庫緩沖區
55、的大小如何,緩沖和讀寫率都不會有太大改變為。在實調優中,也曾發現由于SQL語句的問題,出現緩沖率很高,但仍存在全系統性能問題的情況。SHARED_POOL_SIZE該參數按字節數設定,定義了SGA中共享區的大小。該組件的大小嚴重依賴于應用的類型(即該應用是重用SQL,還是生成動態SQL,等等)。同時它也取決于同步用戶的數量,以及實例是否被配置成支持多線程服務器(MTS)。如果該應用采用了MTS配置,則共享區應該明顯增加,因為光標狀態和用戶進程數據等程序全局區域(PGA)都被置入了共享區。有關多數應用的SHARED_POOL_SIZE大小設置,可以從每10個同步用戶16MB共享區開始。這不是一成
56、不變的,因為應用的性質最終會決定該組件的大小。只有當庫緩沖和字典緩沖使用率一直低于90%時,才需要關注這一參數。但如果應用并未采用變量合并和/共離圖標時,內存的數量并不會使緩沖使用率高于90%。共享區過大會導致處理時間增加,甚至SQL語句的掛起。如果應用不能有效地重用SQL,則無論配置多大的庫緩沖或字典緩沖都無濟于事,不能改善緩沖使用率。另一個值得考慮的因素是需要隨時使用的存儲PL/SQL代碼數量。應用的核心包可以通過查看DBA_SOURCE、USER_SOURCE得以確認,其大小通過查詢DBA_OBJECT_SIZE了解。另外,為了確定存儲PL/SQL是否被置于內存,可以查詢動態性能視圖V$
57、DB_OBJECT_SIZE。內時,包DBMS_SHARED_POOL中的程序大小可被用于確定應用中大包的規模。4)LOG_BUFFER根據字節設定,該參數定義了SGA緩沖區中redolog的大小。缺X值通常是數據庫塊大小的四倍,這對于多數環境并不是最佳的。對于中型的Oracle環境,其結構應該為512Kb左右。對該存儲結構而言,更大并不意味著更好。超過1MB就可能有問題。需要監控V$SESSION_WAIT中logbufferspace的等待事件,優化該內存結構。需要提醒的是,在線redolog文件的大小設置不當,會引起redo請求的等待。5)DB_WRITERS該參數可以針對所有文件系統支
58、持,且不可使用DirectI-O的Oracle實施設定。這并不需要與rawpartitions一起使用,因為異步I-O更加。建議將該參數設定為(2*獨立磁盤驅動器數量/卷)。該參數只有在report.txt中的“averagewritequeuelength”持續高于1時,才需要設定。在Oracle8.0和更高版本中,該參數已不再被支持,而為其它兩個名為DB_WRITER_PROCESSES和DBWR_IO_SLAVES的參數取代。若需要設置DB_WRITER_PROCESSES值高于8,則DB_WRITER_PROCESSES可被設為1,且DBWR_IO_SLAVES可被設為“n”,其中n的
59、值必須設置為(2*獨立磁盤驅動器數量/卷)競爭優化多數與Oracle有關的競爭問題可以通過主動配置管理相關的初始化參數進行。不恰當地配置init.ora中的鎖參數可能引起競爭。為了不打破其中的平衡,所需的參數可進行配置并主動得以處理。包括表在內的數據庫對象可能存在兩個競爭點。第一個是所配置的“freelists”的數量(缺X值為1)。freelist結構維護著表中可用于插入的塊。對于存在大量同步插入的表,有必要配置該結構。為了以主動方式處理freelist競爭,必須在建立表時配置FREELISTS。可考慮的最佳值為(2*CPU數量)。V$WAITSTAT不可能指示存在freelist競爭,除非
60、存在freelist組,而這種設置只存在于OracleParallelServer中。即便如此,也無法了解哪個表存在競爭中。主動式的freelist競爭調優可以事先預防問題出現。資源競爭的第二個來源與索引有關,即對象塊頭中配置的事務槽數量。事務槽是塊頭中的區域,是事務處理進程采用自身識別號進行注冊,以便任何被修改的更能夠通過特定事務槽數量在低層得以識別的地方。如果所有現存的事務槽已經被其它事務占用,服務器器進程會從塊的PCTFREE中請求23個字節,建立一個新的槽。這種情況適用于存在大量同步事務的對象。對于事務槽的競爭,需要設置INITRANS參數。對于塊大小為8K的數據庫,多數情況下,4為最
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 狗狗褥瘡的護理
- 供熱單位行政工作總結和工作打算
- 車庫認購定金協議書
- 酒店廚房合同協議書
- 龍蝦攤位承包協議書
- 飾品木條轉讓協議書
- 酒店寄存免責協議書
- 包子鋪股份合同協議書
- 道路安全運輸協議書
- 個體戶餐飲股東協議書
- 《普通生物學》課程期末考試復習題庫及答案
- dlt-5161-2018電氣裝置安裝工程質量檢驗及評定規程
- 幼兒園講解海軍知識
- 用戶生命周期管理策略-洞察分析
- 第三屆中國長三角地區融資擔保職業技能競賽選拔賽試題庫500題(含答案)
- 2025屆安徽省A10聯盟高三第二次調研數學試卷含解析
- 2024年官方獸醫考試題庫及參考答案
- 【MOOC】生命的教育-浙江大學 中國大學慕課MOOC答案
- 2024年中英城市更新白皮書
- 慢性腎臟病肌少癥診斷治療與預防專家共識(2024年版)解讀
- 中建消防工程專項施工方案
評論
0/150
提交評論