oracle10性能監(jiān)控培訓文檔_第1頁
oracle10性能監(jiān)控培訓文檔_第2頁
oracle10性能監(jiān)控培訓文檔_第3頁
oracle10性能監(jiān)控培訓文檔_第4頁
oracle10性能監(jiān)控培訓文檔_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Nov3,2009

infra-郭俊龍Oracle10g性能監(jiān)控及日常維護Oracle10g

性能監(jiān)控及日常維護Oracle10gawr工具使用及分析Oracle數(shù)據(jù)庫日常維護OracleAWROracleDatabase10g提供了一個顯著改進的工具:自開工作負載信息庫(AWR:AutomaticWorkloadRepository)。Oracle建議用戶用這個取代Statspack。AWR實質上是一個Oracle的內置工具,它采集與性能相關的統(tǒng)計數(shù)據(jù),并從那些統(tǒng)計數(shù)據(jù)中導出性能量度,以跟蹤潛在的問題。與Statspack不同,快照由一個稱為MMON的新的后臺進程及其從進程自動采集數(shù)據(jù)。$ps-ef|grepmmonoracle28407210Oct21-20:10ora_mmon_htxxsvc2OracleAWR

10g中一個新視圖v$session_wait_history這個視圖保存了每個活動session在v$session_wait中最近10次的等待事件。但這對于一段時期內的數(shù)據(jù)性能狀況的監(jiān)測是遠遠不夠的,為了解決這個問題,在10g中還新添加了一個視圖:v$active_session_history,這就是ASH,ASH缺省每一秒收集一下v$session中活動會話的情況,記錄會話等待的事件,不活動的會話不會被采樣,間隔時間由_ash_sampling_interval參數(shù)確定

,由于記錄session的活動信息是很費時間和空間的,ASH采用的策略是:保存處于等待狀態(tài)的活動session的信息,每秒從v$session_wait中采樣一次,并將采樣信息保存在內存中(ASH的采樣數(shù)據(jù)是保存在內存中)。

OracleAWRASH的采樣數(shù)據(jù)是保存在內存中,而分配給ASH的內存空間是有限的,當所分配空間占滿后,舊的記錄就會被覆蓋掉;而且數(shù)據(jù)庫重啟后,所有的這些ASH信息都會消失。這樣,對于長期檢測oracle的性能是不可能的,在Oracle10g中,提供了永久保存ASH信息的方法,這就是AWR,由于全部保存ASH中的信息是非常消耗時間和空間的,所以AWR采用的策略是:MMON進程每小時對ASH進行采樣一次,并將信息保存到磁盤中,如內存缺乏,ASHBUFFER滿的話MMNL進程就會主動寫出,并保存7天,7天后舊的記錄才會被覆蓋。這些采樣信息被保存在表wrh$_active_session_history中。

SQL>selectpool,name,bytes/1024/1024Fromv$sgastatwherenamelike'%ASH%';POOLNAMEBYTES/1024/1024-----------------------------------------------------sharedpoolASHbuffers15.5MOracleAWR

其實,AWR記錄的信息不僅是ASH,還可以收集到數(shù)據(jù)庫運行的各方面統(tǒng)計信息和等待信息,用以診斷分析。AWR的采樣方式是,以固定的時間間隔為其所有重要的統(tǒng)計信息和負載信息執(zhí)行一次采樣,并將采樣信息保存在AWR中??梢赃@樣說:ASH中的信息被保存到了AWR中的視圖wrh$_active_session_history中。ASH是AWR的真子集。OracleAWRAWR用幾個表來存儲采集的性能統(tǒng)計數(shù)據(jù),所有的表都存儲在SYSAUX表空間中的SYS模式下,并且以WRM$_*(5個〕和WRH$_*〔94個〕的格式名。WRM$_*這種類型存儲元數(shù)據(jù)信息〔如檢查的數(shù)據(jù)庫和采集的快照〕,WRH$_*這種類型保存實際采集的統(tǒng)計數(shù)據(jù)。H代表“歷史數(shù)據(jù)(historical)”,而M代表“元數(shù)據(jù)(metadata)”。在這些表上構建了幾種帶前綴DBA_HIST_的視圖〔dba_hist_snapshot,dba_hist_baseline等〕,這些視圖可以用來編寫您自己的性能診斷工具。

OracleAWR為了節(jié)省空間,系統(tǒng)默認采集的數(shù)據(jù)在7天后自動去除。快照頻率和保存時間都可以由用戶修改:查看當前的AWR保存策略:SQL>colSNAP_INTERVALformata20SQL>colRETENTIONformata20SQL>select*fromdba_hist_wr_control;DBIDSNAP_INTERVALRETENTIONTOPNSQL------------------------------------------------------------2774909533+0000001:00:00.0+0000700:00:00.0DEFAULT以上結果表示,每小時產(chǎn)生一個SNAPSHOT,保存7天。

OracleAWRAWR配置:1.調整AWR產(chǎn)生snapshot的頻率和保存策略

AWR配置都是通過dbms_workload_repository包進行配置,如將收集間隔時間改為30分鐘一次,并且保存31天時間〔單位都是分鐘〕:

SQL>execdbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>31*24*60);2.關閉AWR:把interval設為0那么關閉自動捕捉快照:SQL>execdbms_workload_repository.modify_snapshot_settings(interval=>0);OracleAWR3.手工創(chuàng)立一個快照:

SQL>execDBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();如果數(shù)據(jù)庫的某些參數(shù)或應用程序做了調整,可以手工即時的創(chuàng)立一個快照更有利于數(shù)據(jù)的統(tǒng)計分析。4.查看快照:SQL>select*fromsys.wrh$_active_session_history

OracleAWR5.手工刪除指定范圍的快照

SQL>execDBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id=>2889,high_snap_id=>3000,dbid=>2774909533);6.生成awr報告:awrrpt.sql:生成指定快照區(qū)間的統(tǒng)計報表;awrrpti.sql:生成指定數(shù)據(jù)庫實例,并且指定快照區(qū)間的統(tǒng)計報表;awrsqlrpt.sql:生成指定快照區(qū)間,指定SQL語句(實際指定的是該語句的SQLID)的統(tǒng)計報表;awrsqrpi.sql:生成指定數(shù)據(jù)庫實例,指定快照區(qū)間的指定SQL語句的統(tǒng)計報表;awrddrpt.sql:指定兩個不同的時間周期,生成這兩個周期的統(tǒng)計比照報表;awrddrpi.sql:指定數(shù)據(jù)庫實例,并指定兩個的不同時間周期,生成這兩個周期的統(tǒng)計比照報表;OracleAWRSQL>@$ORACLE_HOME/rdbms/admin/awrrpt.sql它產(chǎn)生兩種類型的輸出:文本格式〔類似于Statspack報表的文本格式但來自于AWR信息庫〕和默認的HTML格式〔擁有到局部和子局部的所有超鏈接〕,從而提供了非常用戶友好的報表。直接回車,生成html格式的awr:OracleAWR輸入你想創(chuàng)立的最近快照天數(shù):OracleAWR列出近兩天的實例的快照ID及時間:OracleAWR輸入快照起始,結束ID及awr報告的名稱:OracleAWR可能運行幾秒到幾分鐘的時間就會將兩個快照之間的統(tǒng)計信息輸出到html中。OracleAWR

AWR報告:OracleAWRAWR報告的主要內容:1.前言局部:這是AWR報告的第一段,用于描述環(huán)境包括數(shù)據(jù)庫名,DBID,數(shù)據(jù)庫版本,是否為RAC節(jié)點,快照報告的采集時間等。2.綜述局部:包含等待事件段,LoadProfile段,實例效率統(tǒng)計段,SharedPool統(tǒng)計段,CacheSize段,其中最重要的是等待事件段,它告訴我們在快照時間內數(shù)據(jù)庫遇到哪些性能瓶頸,它們將是性能調整或問題診斷的主要候選對象。OracleAWR常見等待事件介紹:1.dbfilesequentialread文件順序讀取這一事件通常顯示與單個數(shù)據(jù)塊相關的讀取操作(如索引讀取)。如果這個等待事件比較顯著,可能表示在多表連接中,表的連接順序存在問題,可能沒有正確的使用驅動表;或者可能說明不加選擇地進行索引。在大多數(shù)情況下我們說,通過索引可以更為快速的獲取記錄,所以對于一個編碼標準、調整良好的數(shù)據(jù)庫,這個等待很大是很正常的。但是在很多情況下,使用索引并不是最正確的選擇,比方讀取較大表中大量的數(shù)據(jù),全表掃描可能會明顯快于索引掃描,所以在開發(fā)中我們就應該注意,對于這樣的查詢應該進行防止使用索引掃描。OracleAWR2.dbfilescatteredread-DB文件分散讀取這種情況通常顯示與全表掃描相關的等待。當數(shù)據(jù)庫進行全表掃時,基于性能的考慮,數(shù)據(jù)會分散(scattered)讀入BufferCache。如果這個等待事件比較顯著,可能說明對于某些全表掃描的表,沒有創(chuàng)立索引或者沒有創(chuàng)立適宜的索引,我們可能需要檢查這些數(shù)據(jù)表已確定是否進行了正確的設置。然而這個等待事件不一定意味著性能低下,在某些條件下Oracle會主動使用全表掃描來替換索引掃描以提高性能,這和訪問的數(shù)據(jù)量有關,在CBO下Oracle會進行更為智能的選擇,在RBO下Oracle更傾向于使用索引。因為全表掃描被置于LRU(LeastRecentlyUsed,最近最少適用)列表的冷端(coldend),對于頻繁訪問的較小的數(shù)據(jù)表,可以選擇把他們Cache到內存中,以防止反復讀取。當這個等待事件比較顯著時,可以結合v$session_longops動態(tài)性能視圖來進行診斷,該視圖中記錄了長時間(運行時間超過6秒的)運行的事物,可能很多是全表掃描操作(不管怎樣,這局部信息都是值得我們注意的)。OracleAWR3.dbfileparallelwriteDBWR專屬等待事件與其名稱暗示相反,該事件不與任何并行DML操作相關,該等待事件屬于DBWR進程,DBWR進程負責向數(shù)據(jù)文件寫入臟數(shù)據(jù)塊的唯一進程,即DBWR進程執(zhí)行對使用SGA的所有數(shù)據(jù)庫寫入。阻塞該進程的是操作系統(tǒng)的IO子系統(tǒng)。當然DBWR進程的寫入操作也會對同一磁盤操作的其他會話造成影響。DBWR查找臟塊的時機:每隔三秒一次的查找;當前臺提交需要去除緩沖區(qū)內容時;當滿足_DB_LARGE_DIRTY_QUEUE/_DB_BLOCK_MAX_DIRTY_TARGET/FAST_START_MTTR_TARGET閾值。緩慢的DBWR操作可以造成前臺會話在writecompletewaits(前臺不允許修改正在傳輸?shù)酱疟P的塊)或freebufferwaits(DBWR不能滿足釋放緩沖區(qū)的需求)事件上。如果平均等待時間大小10cs,那么說明IO緩慢。如果不存在dbfileparallelwrite事件,很可能初始化參數(shù)disk_async_io=FALSE,這種情況一般發(fā)生在AIX和HPUX平臺上。OracleAWR3.dbfileparallelwriteDBWR專屬等待事件DBWR將一組臟數(shù)據(jù)編成"寫入批量組",然后發(fā)布多個IO請求以將"寫入批量組"寫入數(shù)據(jù)文件,然后以此事件等待直到IO請求都完成。但是,當使用異步IO時,DBWR不等待整個批量寫入完成,僅等待一定百分比的IO操作完成后,就將空閑緩沖區(qū)推到LRU鏈以使其可用。解決方法:如果平均等待時間長,要選擇使用正確的IO操作。如果數(shù)據(jù)文件在裸設備上,并且平臺支持異步IO,請應該使用異步IO。如果數(shù)據(jù)文件位于文件系統(tǒng)上,那么應該使用同步寫入和直接IO。相關的初始化參數(shù)是DISK_ASYNCH_IO和FILESYSTEMIO_OPTIONS;如果重做位于祼設備上,而數(shù)據(jù)文件位于文件系統(tǒng)上,那么可以設置DISK_ASYNCH_IO=TRUE,F(xiàn)ILESYSTEMIO_OPTIONS=DIRECTIO。使用這種方法可以獲得對于祼設備使用異步IO,而對于文件系統(tǒng)使用直接IO的效果;使用DB_WRITER_PROCESSES選項產(chǎn)生多個DBWR進程。OracleAWR4.

PXDeqCredit:sendblkd

這個等待事件是由于PQ之間通訊引起的,可以忽略?;蛘呤怯捎赑ARALLEL

可能并不適合,雖然并行執(zhí)行,但是工作的SLAVE很少,大多數(shù)在等待。

5.

gcbufferbusy

gcbufferbusy等待事件的產(chǎn)生一般不是SQL寫得有問題就是應用在RAC上的部署不合理引起,可能通過修改應用或表結構來改變。OracleAWR6.directpathreadtemp

與asynchronousdiskoperate有關,檢查fuser/dev/async,kctune|grepaio_max_ops,showparametedisk_asynch_io是否正常。繼續(xù)檢查v$session_wait,看filenumber在不在dba_data_files中,如不在,問題可能發(fā)生在temptablespace中,隨即檢查v$sort_usage,查看session,如與v$session_wait中“directpathread”中的session吻合。繼續(xù)檢查pga的使用情況select*fromv$pagstat,看pga是否使用已較高,pga使用到達一定程度后,只能使用temptablespace完成排序操作,由于temptablespace使用的disk,出現(xiàn)directpathread也是正常的。解決此問題的方法為使用較大的將workarea_size_policy更改為manual,加大sort_area_size,減少使用temptablespace的使用。OracleAWR7.logfilesync-日志文件同步:

當一個用戶提交或回滾數(shù)據(jù)時,LGWR將會話期的重做日志緩沖器寫入到重做日志中。日志文件同步過程必須等待這一過程成功完成,為了減少這種等待事件,可以嘗試一次提交更多的記錄〔頻繁的提交會帶來更多的系統(tǒng)開銷〕,將重做日志置于較快的磁盤上,或交替使用不同物理磁盤上的重做日志,以降低歸檔對LGWR的影響。對于軟RAID,一般來說不要使用RAID5,RAID5對于頻繁寫入得系統(tǒng)會帶來較大的性能損失,可以考慮使用文件系統(tǒng)直接輸入/輸出,或使用裸設備,這樣可以獲得寫入的性能提高。OracleAWR8.readbyothersession

readbyothersession最重要的原因還是由于io的能力太差,一個io讀所消耗的時間太長造成的,可能是兩種情況,io負載過重,或者io配置太低,當然調整語句減少io讀也是一種方法。以上各點只是一些現(xiàn)象,具體的查看SQL語句,可能通過分析SQL語句的執(zhí)行方案,查看相關表的索引情況,及SQL語句或存儲過程本身合理性,來對相關語句進行相應的調整,通過表的存儲結構來確定是否將表分區(qū)或存放到IO比較適宜的物理位置。OracleAWR例:關于10月21號BOSS全省營業(yè)系統(tǒng)故障的處理及分析報告中:數(shù)據(jù)庫出現(xiàn)enq:TX-allocateITLentry等待事件,某些SQL出現(xiàn)堵塞等待的現(xiàn)象。經(jīng)確認,該異常為應用程序引發(fā)??赡苁怯捎谕蝗挥写笈繑?shù)據(jù)導入導致出現(xiàn)ITL的WAITS。該異常直接導致CRM程序出現(xiàn)異常。

OracleAWRAWR報告的主要內容:3.SQL局部:無效的SQL語句是性能不好的主要原因,這局部對這段時間區(qū)間內的SQL按照執(zhí)行時間,邏輯讀,磁盤讀等指標進行了分類和排序,和STATSPACK不同的是,從AWR報告中可以直接查到該SQL的文本和發(fā)送請求的客戶端進程信息,極大的提高了SQL分析的效率OracleAWRSQL局部:SQLorderedbyElapsedTime:記錄了執(zhí)行總和時間的TOPSQL(請注意是監(jiān)控范圍內該SQL的執(zhí)行時間總和,而不是單次SQL執(zhí)行時間ElapsedTime=CPUTime+WaitTime)。ElapsedTime(S):SQL語句執(zhí)行用總時長,此排序就是按照這個字段進行的。注意該時間不是單個SQL跑的時間,而是監(jiān)控范圍內SQL執(zhí)行次數(shù)的總和時間。單位時間為秒。ElapsedTime=CPUTime+WaitTimeCPUTime(s):為SQL語句執(zhí)行時CPU占用時間總時長,此時間會小于等于ElapsedTime時間。單位時間為秒。Executions:SQL語句在監(jiān)控范圍內的執(zhí)行次數(shù)總計。ElapperExec(s):執(zhí)行一次SQL的平均時間。單位時間為秒。%TotalDBTime:為SQL的ElapsedTime時間占數(shù)據(jù)庫總時間的百分比。SQLID:SQL語句的ID編號,點擊之后就能導航到下邊的SQL詳細列表中,點擊IE的返回可以回到當前SQLID的地方。SQLModule:顯示該SQL是用什么方式連接到數(shù)據(jù)庫執(zhí)行的,如果是用SQL*Plus或者PL/SQL鏈接上來的那根本上都是有人在調試程序。一般用前臺應用鏈接過來執(zhí)行的sql該位置為空。SQLText:簡單的sql提示,詳細的需要點擊SQLID。OracleAWRSQL局部:SQLorderedbyCPUTime:記錄了執(zhí)行占CPU時間總和時間最長的TOPSQL(請注意是監(jiān)控范圍內該SQL的執(zhí)行占CPU時間總和,而不是單次SQL執(zhí)行時間)。SQLorderedbyGets:記錄了執(zhí)行占總buffergets(邏輯IO)的TOPSQL(請注意是監(jiān)控范圍內該SQL的執(zhí)行占Gets總和,而不是單次SQL執(zhí)行所占的Gets)。SQLorderedbyReads:記錄了執(zhí)行占總磁盤物理讀(物理IO)的TOPSQL(請注意是監(jiān)控范圍內該SQL的執(zhí)行占磁盤物理讀總和,而不是單次SQL執(zhí)行所占的磁盤物理讀)。SQLorderedbyExecutions:記錄了按照SQL的執(zhí)行次數(shù)排序的TOPSQL。該排序可以看出監(jiān)控范圍內的SQL執(zhí)行次數(shù)。SQLorderedbyParseCalls:記錄了SQL的軟解析次數(shù)的TOPSQL。說到軟解析(softprase)和硬解析(hardprase),就不能不說一下Oracle對sql的處理過程。SQLorderedbySharableMemory:記錄了SQL占用librarycache的大小的TOPSQL。SharableMem(b):占用librarycache的大小,單位是byte。SQLorderedbyVersionCount:記錄了SQL的翻開子游標的TOPSQL。SQLorderedbyClusterWaitTime:記錄了集群的等待時間的TOPSQLOracleAWRAWR報告的主要內容:點擊sqlid可以看到具體的sql語句的內容,可以放到查看其具體的執(zhí)行方案,分析語句的索引使用情況及cost的上下,以便調優(yōu)sql語句。OracleAWRAWR報告的主要內容:針對單獨的sql語句我們可以生成獨立的awr報告,運行:

SQL>@?/rdbms/admin/awrsqrpt.sqlOracleAWR

例:調整SQL語句:原語句

SELECTDISTINCT"A2"."SERV_ID","A2"."AGREEMENT_ID","A2"."ATTR_ID","A2"."ATTR_VAL","A2"."EFF_DATE","A2"."EXP_DATE","A2"."STATE","A2"."STATE_DATE","A2"."SERV_ATTR_SEQ_ID","A2"."ATTR_TYPE","A2"."ATTR_TYPE_ID","A2"."OPER_SERIAL_NBR","A2"."EFF_ACCT_MONTH","A2"."EXP_ACCT_MONTH","A2"."REGION_ID","A2"."PARTITION_ID_ATTR","A2"."PARTITION_ID_REGION",''FROM"LS65_SID"."SERV_ATTR_T""A2","LS65_SID"."SERV_ATTR_T""A1"WHERE"A2"."ATTR_TYPE"='LS_FLD_DOWN_RATE'AND"A2"."ATTR_TYPE"="A1"."ATTR_TYPE"AND"A2"."SERV_ID"="A1"."SERV_ID"

AND"A2"."ATTR_VAL"<>"A1"."ATTR_VAL"AND"A2"."ATTR_ID"<>"A1"."ATTR_ID"

AND"A2"."STATE"='00A'ANDTO_CHAR(“A2”.“EFF_DATE”,‘yyyy-mm-dd’)=TO_CHAR(SYSDATE@!,‘yyyy-mm-dd’)

AND"A1"."ATTR_TYPE"='LS_FLD_DOWN_RATE‘

將TO_CHAR(“A2”.“EFF_DATE”,‘yyyy-mm-dd’)=TO_CHAR(SYSDATE@!,‘yyyy-mm-dd’)改為如下以提高語句的執(zhí)行速度:

"A2"."EFF_DATE">=TO_DATE(TO_CHAR(SYSDATE,'yyyymmdd'),'yyyymmdd')AND

"A2"."EFF_DATE"<TO_DATE(TO_CHAR(SYSDATE,'yyyymmdd'),'yyyymmdd')+1OracleAWR5.段統(tǒng)計局部:告訴哪些段(包括表和索引)在快照期間經(jīng)歷最高的磁盤讀操作,這些信息可以幫助我們決定是否需要重建索引,或對段進行分區(qū)來減少發(fā)生在這些數(shù)據(jù)文件上的I/O。

OracleAWR

7.

AWR數(shù)據(jù)導出/導入:將awr遷移到其它數(shù)據(jù)庫以便于以后分析,提供兩個新工具來完成導出和遷移AWR數(shù)據(jù)的工作。

DBMS_SWRF_INTERNAL.AWR_EXTRACT用來導出數(shù)據(jù),

其使用方法如下:

Begin

DBMS_SWRF_INTERNAL.AWR_EXTRACT(

dmpfile

=>'awr_20091103.dmp',

dmpdir

=>‘AWR_DIR',

bid

=>298817,

eid

=>298855);

end;其中,dmpfile參數(shù)用于指定將要導出的AWR數(shù)據(jù)文件的名字,dmpdir是指定存放導出文件的目錄路徑,bid是起始快照編號,eid是結束快照編號。OracleAWR7.

AWR數(shù)據(jù)導出/導入:

DBMS_SWRF_INTERNAL用來遷移AWR數(shù)據(jù)文件到其他數(shù)據(jù)庫。導入AWR數(shù)據(jù)的過程分為兩個步驟,首先使用DBMS_SWRF_INTERNAL.AWR_LOAD方法把數(shù)據(jù)導入到一個臨時模式中,本例是AWR_TEMP(也可以自己定義名稱),具體方法如下:begin

DBMS_SWRF_INTERNAL.AWR_LOAD(

SCHNAME=>‘AWR_TEST',

dmpfile=>'awr_20091103.dmp',

dmpdir=>

‘AWR_DIR');

end;接下來把需要把AWR數(shù)據(jù)轉移到SYS模式中,操作方法如下:execDBMS_SWRF_INTERNAL.MOVE_TO_AWR(SCHNAME=>‘TEST');這樣AWR數(shù)據(jù)的導入工作已經(jīng)完成,可以使用這種方法建立一個專門存放AWR數(shù)據(jù)的數(shù)據(jù)庫,用于集中管理和分析多個數(shù)據(jù)庫實例的性能統(tǒng)計數(shù)據(jù)。OracleAWR8.收集AWR報告的級別:AWR的行為受到初始化參數(shù)STATISTICS_LEVEL的影響。這個參數(shù)有三個值:

BASIC:awr統(tǒng)計的計算和衍生值關閉.只收集少量的數(shù)據(jù)庫統(tǒng)計信息.TYPICAL:

〔默認值〕只有局部的統(tǒng)計收集.他們代表需要的典型監(jiān)控oracle數(shù)據(jù)庫的行為.

ALL:所有可能的統(tǒng)計都被捕捉.并且有操作系統(tǒng)的一些信息.這個級別的捕捉應該在很少的情況下,比方你要更多的sql診斷信息的時候才使用.SQL>showparameterstatistics_levelNAMETYPEVALUE-----------------------------------------------------------------------------statistics_levelstringTYPICALOracleAWR9.基線介紹:基線〔baseline〕是一種機制,可以在重要時間的快照信息集做標記。一個基線定義在一對快照之間,快照通過他們的快照序列號識別.每個基線有且只有一對快照。一次典型的性能調整實踐從采集量度的基線集合、作出改動、然后采集另一個基線集合開始,可以比較這兩個集合來檢查所作的改動的效果。在AWR中,對現(xiàn)有的已采集的快照可以執(zhí)行相同類型的比較。Baseline記錄了baseline所指定的快照ID,當維護awr的mmon進程在去除過期的快照時,在baseline中的快照那么不會被刪除,當數(shù)據(jù)庫做了一段時間的調優(yōu)后,awr可以用baseline保存的快照與當前系統(tǒng)的awr報告進行比照.OracleAWR9.基線介紹:基線查詢:SQL>select*Fromdba_hist_baseline/wrm$_baseline;基線創(chuàng)立:SQL>execdbms_workload_repository.create_baseline(beginsnap_id,endsnap_id,'baseline_name');基線刪除:SQL>execdbms_workload_repository.drop_baseline(baseline_name=>'baseline_name',cascade=>true);Oracle日常維護1.從主機查看Oracle數(shù)據(jù)庫的進程:

$ps-ef|grepora_s

oracle845025810Aug20-142:02ora_smon_a2svc1

oracle數(shù)據(jù)庫的日志:位置查看:SQL>showparameterbackground_dump_dest

NAMETYPEVALUE

-----------------------------------------------------------------------------------------------------------

background_dump_deststring/home/oracle/app/oracle/admin/sidsvc/bdump

主要日志alert_sidsvc1.log,其中oracle內部錯誤,數(shù)據(jù)庫啟停,物理結構改變,默認參數(shù)修改,壞塊,死鎖等日志信息。Oracle日常維護操作系統(tǒng)級監(jiān)控topsql(cpu/mem)腳本:montopsql.shexportORACLE_SID=htxxsid1SDT=`date+"%Y%m%d%H%M$S"`SDT=/tmp/gjl/$ORACLE_SID'_'$SDTSPIDS=`UNIX95=ps-e-o“pcpu,pid,vsz,args”|sort-rn+2|grepLOCAL=NO|head-10|awk‘ORS=“,”{print“\047”$2“\047”}’`-----對內存排序,換為sort–rn那么是對cpu排序echo$SPIDS|sed's/\,$//g‘echo'SELECTv$session.paddr,v$session.sql_address,v$sqltext.hash_value,v$sqltext.piece,v$sqltext.sql_text,v$gramFROMv$session,v$sqltext'>>/tmp/gjl/tmp.sqlecho'WHEREEXISTS(SELECT\047\061\047FROMv$processWHEREaddr=v$session.paddrand(spidin('>>/tmp/gjl/tmp.sqlecho$SPIDS|sed's/\,$//g'>>/tmp/gjl/tmp.sqlecho')))ANDv$session.sql_address=v$sqltext.addressANDv$session.sql_hash_value=v$sqltext.hash_valueORDERBYsql_address,hash_value,piece'>>/tmp/gjl/tmp.sqlecho'/'>>/tmp/gjl/tmp.sqlOracle日常維護sar13>>/tmp/gjl/tmpcpu.logsqlplus"/assysdba"<<EOFCOLPADDRNOPRINT;COLSQL_ADDRESSNOPRINT;COLHASH_VALUENOPRINT;SETHEADINGOFF;spool/tmp/gjl/topsql.sql@/tmp/gjl/tmp.sqlspooloffexitEOFcat/tmp/gjl/tmpcpu.log>>topsql.sqlrmtmpcpu.logmv/tmp/gjl/topsql.sql$SDT.sqlOracle日常維護3.查看哪個表被鎖:

selectoracle_username||'('||s.osuser||')'username

,s.sid||','||s.serial#sess_id,owner||'.'||object_nameobject

,object_type,decode(l.block,0,'NotBlocking'1,'Blocking',2,'Global')status

,decode(v.locked_mode,0,'None',1,'Null',2,'Row-S(SS)'

,3,'Row-X(SX)',4,'Share',5,'S/Row-X(SSX)',6,'Exclusive',TO_CHAR(lmode))mode_held

fromv$locked_objectv,dba_objectsd,v$lockl,v$sessions

wherev.object_id=d.object_idandv.object_id=l.id1andv.session_id=s.sid

orderbyoracle_username,session_id;可以用SQL>altersystemkillsession'344,890';來殺掉此會話

;如果殺不掉,就利用V$porcess里的spid這個系統(tǒng)進程號,在數(shù)據(jù)庫的主機上用kill-9spid干掉!Oracle日常維護

4.知道PID查相應執(zhí)行的SQL語句:SELECT/*+ORDERED*/sql_textFROMv$sqltextaWHERE(a.hash_value,a.address)IN(SELECTDECODE(sql_hash_value,0,prev_hash_value,sql_hash_value),DECODE(sql_hash_value,0,prev_sql_addr,sql_address)FROMv$sessionbWHEREb.paddr=(SELECTaddrFROMv$processcWHEREc.spid=2589108))ORDERBYpieceASC;Oracle日常維護5.識別‘低效執(zhí)行’的SQL語句SELECTEXECUTIONS,DISK_READS,BUFFER_GETS,ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2)Hit_radio,ROUND(DISK_READS/EXECUTIONS,2)Reads_per_run,SQL_TEXTFROMV$SQLAREAWHEREEXECUTIONS>0ANDBUFFER_GETS>0AND(BUFFER_GETS-DISK_READS)/BUFFER_GETS<0.8ORDERBY4DESC;Oracle日常維護6.

查運行時間很長的SQL:SELECTUsername,Sid,Opname,Round(Sofar*100/Totalwork,0)||'%'ASProgress,Time_Remaining,Sql_TextFROMV$session_Longops,V$sqlWHERETime_Remaining<>0ANDSql_Address=AddressANDSql_Hash_Value=Hash_Value;Oracle日常維護8.如何監(jiān)控當前數(shù)據(jù)庫誰在運行什么SQL語句:

selectosuser,username,sql_textfromv$sessiona,v$sqltextb

wherea.sql_address=b.addressorderbyaddress,piece;9.查共享池中SQL語句的數(shù)量及占用了多少內存,及每條SQL語句的平均消耗內存情況:

selectbytes,sql_count,bytes/sql_count

from(selectcount(*)sql_countfromV$sqlarea),v$sgastat

wherename='sqlarea';Oracle日常維護10.查看內存排序量與磁盤排序量:selectname,valuefromV$sysstatwherenamelike'%sort%';11.回滾段的爭用情況

selectname,waits,gets,waits/gets"Ratio"fromv$rollstata,v$rollnamebwherea.usn=b.usn;12.找使用CPU多的用戶sessionselecta.sid,spid,status,substr(gram,1,40)prog,a.terminal,osuser,value/60/100valuefromv$sessiona,v$processb,v$sesstatcwherec.statistic#=12andc.sid=a.sidanda.paddr=b.addrorderbyvaluedesc;Oracle日常維護13.監(jiān)控SGA的命中率

selecta.value+b.value"logical_reads",c.value"phys_reads",round(100*((a.value+b.value)-c.value)/(a.value+b.value))"BUFFERHITRATIO"fromv$sysstata,v$sysstatb,v$sysstatcwherea.statistic#=38andb.statistic#=39andc.statistic#=40;14.測量dictionarycache的命中率:V$rowcacheselect1-(SUM(getmisses)/SUM(gets))"DataDictionaryHitRatio"fromV$rowcache;"DataDictionaryHitRatio"的值要>85%;Oracle日常維護15.測量librarycache的命中率:V$librarycacheselectnamespace,gethitratio,pinhitratio,reloads,invalidationsfromv$librarycachewherenamespacein('SQLAREA','TABLE/PROCEDURE','BODY','TRIGGER');SQLAREA局部的gethitratio、pinhitratio要>90%。16.測量dictionarycache的命中率:V$rowcacheselect1-(SUM(getmisses)/SUM(gets))"DataDictionaryHitRatio“fromV$rowcache;"DataDictionaryHitRatio"的值要>85%。Oracle日常維護17.測量BufferCache的命中率:

select1-((physical.value-direct.value-lobs.value)/logical.value)"BufferCacheHitRatio"fromV$SYSSTATphysical,V$SYSSTATdirect,V$SYSSTATlobs,V$SYSSTATlogicalwhere='physicalreads'And='physicalreadsdirect'and='physicalreadsdirect(lob)'And='sessionlogicalreads';

"BufferCacheHitR

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論