數據庫的運維分享_第1頁
數據庫的運維分享_第2頁
數據庫的運維分享_第3頁
數據庫的運維分享_第4頁
數據庫的運維分享_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

眾所周知,數據庫的運維既是個技術活兒也是個苦差事,不僅要有廣闊的知識面,強大的技術能力,主機、存儲、網絡、操作系統最好樣樣精通,而且要會寫SQL、shell、最好也會Java…同時,還需要擁有超強的耐心、謹慎的態度以及強健的體魄。首先跟大家分享下我在運維過程二個案例1、我的第一個運維工具:ora2008年剛進公司轉做專職DBA,發現DBA竟然比以前干程序員還苦逼,通宵施工如家常便飯,而且有大量的重復工作。當時每個dba在共享服務器上都有自己的腳本集,每當應用側有任何異動DBA們就找到自己的腳本集文件,然后替換條件復制粘貼執行,遇到沒找到的就一頓狂敲鍵盤輸SQL。特別是在遇到大故障時,身后便會圍著一群人,有各方領導,還有開發商,里外好幾層。那可真是令人抓狂,因為做過幾年的開發,我便想,為何不做一個shell程序,統一的入口,只要傳入參數即可。于是我開發了我的第一款簡單的Oracle運維工具,當時腳本集就叫ora。這個工具后來在運維團隊不斷被完善、擴散。至今該工具還在使用。

h匚costvalueOra腳本集的優點:Dartitiontablecolumnenq:1ah匚costvalueOra腳本集的優點:Dartitiontablecolumnenq:1a一row1ockcont已rLtionmtdTiDationparttabownertabnametKlockinfowait,sidallwaiteventsessianinfoof-:::ogtnnrethancostvalueSL--LoginasOSUs已thighp-ara--gethightpararlLeLwduleactive--GetActiveSessionsizetabnaireLownerj--GetSizeoftables/indexesidxdes匚tabnameowner~DisplayindeistructuretsfreeLtsnameJ--GetIat:leapac:已UmaLgimtablespacetsnams--TablsspacaLnfarirstiontsnaine--ListdatafilesbytablespacesqltextSQLID一一GetSQLTextbyhashvalueplanJ.LIDG=ttxzcuie1'ls.nbvUUL11'lockL二二--Get1匚ickinfurmationbysidlockwait--Getlockrequestor/blockerik-1patternL口wner」--GetobjectbytiairepatterntablikepatternLowner」=GettablEbynamepatterntstattabnaRieowner--GettablestatisticsistattabnaEie□wnar--GetindeKstatisticsipstatIndnaireowner--Getindeicpartitionstatistics口bjsql□bjnameorner一一GetSQLsbyobje匚tnamelongops=Getlongrunquerytran--GetallthetransactinngdependobjnaKfiLowner」--Getdependencyinformation1吐七匚hlaiuh*一一Get1atuhnarnEbylatchidluld□bjectid-Yhohavelocfcangi^enobject?sort--¥huisrurmlngsortoperatian?dssctabnaRisLowner」--DescribeTabl0StructuresegirentLsizeJ--SegircntlargethangivensleaseqLikepatternLowne匸」=Getsequencebynamepeitt已匸口tabpiarttabnaRELowner」--Listtablepartition呂viewpattarnLowner」--Listviewbynanspattsrnparampattern--ListOracleparajreters_parampattern__ListOraclehiddenparametersgrant□bjnaEieLowner」--Get§r-mtinfDrnationunusab1已Lower」--Listunusisbl已indeK巳呂invalidLawner」--Listinvalidobjects□sure getthecreateobjectgqlListalldxLockwait.?讓日常監控、維護操作等標準化。?減少出錯機會,提高效率。?讓DBA從容應對故障應急。當然缺點也是明顯的,正是有了這個工具,現在很多DBA們到了非駐場的服務現場就不會寫SQL了。(怪我嘍…)2、智能HANG分析在運維期間碰到系統常發生HANG,當數據庫發生在爭奪內核級別的資源時,比如Latch等,在11G之前oracle不能自動的檢測并處理這種死鎖。這時候需用Hanganalyze工具dump資源持有的相互關系。而這時候當二線DBA到場時已基本Hang死,或無法登陸,即使能做出dumptrace也無法反映真實原因。另外分析trace定位堵塞源也要一定時間。所以分析出結果時往往應用已中斷。既然hang住后要重啟或終止掉所有前臺發起數據庫進程才能解決,何不在hang開始初期就發起自動hang分析,識別引起hang的源頭,記錄相關信息,終止源頭。具體過程如下:1?通過等待事件識別Hang癥狀2?根據上一步驟判斷觸發搜集hanganalyze3.分析hang的dump信息,并確認是否存在hang。4?識別hang的源頭記錄相關信息并解決hang問題。這是我編寫的第二個程序(由于該程序已申請了專利,代碼在此就不分享了)。注:在Oracle11g11.2.0.2版本發布后,在其新特性中才出現了hang管理器(HangManager),HM配置參數(開啟后會根據配置終止實例或進程,請謹慎使用):_hang_resolution=TRUE或者FALSE。這個參數用于控制HM是否解決hang。_hang_resoluti_scope=OFF,PORCESS或者INSTANCE。這個參數用于控制HM解決問題的范圍。_hang_detection二〈number〉。HM檢測hang的時間間隔,默認值為30(秒)。小結后面只要碰到能重復的、具有一定規則的工程,如長事務分析、二階段事務(DX鎖)分析、自動生命周期管理、自動優化調度、巡檢工具、離線巡檢工具等等。如果你能把你日常需要做的工具化或自動化了,DBA還是苦差活么?那么就有更多時間研究更深層次技術。我只是一個不安分的、會寫程序的、“會偷懶”的DBA。二、OraZ之路至此越來越想做一個較為完整能幫助DBA的工具,該工具將運行SQL查詢視圖監控數據庫的性能,識別數據庫存在隱患。在數據庫的運維工作包括部署安裝、性能優化、備份容災、故障恢復、預防性巡檢等工作,而這幾個方面都存在不少重復度高、工作量大的任務,有的甚至還可以并行處理,這些都是該工具需解決目標。1、 運行需求?Oraz是基于JDBC+SSH的JAVA應用,監測和分析數據庫實例活動,系統要求是相當簡單,只需jdbc能連接上數據庫即可,該工具不會安裝任何額外軟件在你的服務器和終端上。2、 Oraz目前能做什么?有關數據庫和實例的一般信息。?有關數據庫結構和數據存儲的詳細信息:表空間,數據庫文件重做日志、歸檔的日志等。表空間/數據文件使用情況和可用空間內存信息:SGA/PGA組件和大小,共享的池和緩沖區緩存統計數據。?實例活動洞察-CPU消耗、等待事件、頂級的會話、頂級SQL語句等。會話信息-活動會話,排在前面的會話等。頂級的SQL語句和有關每個語句包括語句活動、執行統計信息、資源消耗、執行計劃、版本等詳細的信息。Oracle數據庫全系統統計信息、操作系統統計、指標和時間模型。3、 DBA日常運維之巡檢規避系統風險運維自動化體系形成之前,我們DBA的日常例行工作在總工作量中占比較高,很消耗人力,員工疲于奔命但工作效率不高,也很容易出差錯。自動化平臺把我們的員工從繁瑣的常規工作中解放出來,更專注于做架構優化類有創造性的工作,效率也有了進一步的改善.每日檢查是工程師上班的第一件事,通過腳本來進行,腳本輸出僅提示異常部分,檢查內容例如:數據庫檢查內容:數據庫/系統是否處于歸檔模式數據文件是否有offline或處于備份狀態文件系統使用情況(90%為告警閥值)alert_SID.log文件是否有錯誤或告警備份是否正常表空間使用情況(90%為告警閥值)數據庫/系統對象的存儲參數設置檢查是否有失效的索引檢查是否有無效的對象檢查有無運行失敗的JOB檢查回滾段使用情況數據庫/系統用戶情況等,編寫對應查詢SQL,再通過JDBC訪問遠程服務器獲取該值進行判斷,如分析指定用戶下是否存在失效主鍵:SELECTowner,constraint_name,table_name,statusFROMall_constraintsWHEREowner='&OWNER'ANDstatus='DISABLED'ANDconstraint_type=P;建立一系列巡檢規則,實現如360式的一鍵體檢方式:?共檢查了1臺ORACLE進狷庫,詬査看:03xi&^垂引信息其他O^CLEW?如庫信息圖列出體檢結果,黃色需dba關注的,為不匹配預定檢查項的,點擊對應圖標,可以看到DBA+P -X*?>c已經對[臺數據庫完成讖檢!返回 /邂檢克成!▼共槍査了1諭堀障,以下1合族論庫有問題,清沓若:具體體檢結果。通過該體檢功能可快速檢測數據庫問題;目前該巡檢暫不支持自定義,如需可以考慮建立可分享的自定義巡檢項,這視大家的反饋情況而定。4、實例活動洞察實例活動洞察分析功能當前已同步發布更新,在很多情況下,當數據庫發生性能問題的時候,我們是來不及收集足夠的診斷信息,或者收到告警,甚至問題發生的時候DBA根本不在場。這給我們診斷問題帶來很大的困難。那么在這種情況下,我們是否能在事后收集一些信息來分析問題的原因呢首先我們看看Oracle重器oem,而TopActivity功能是使用最為頻繁的功能點:3.67.96負載!.12SS532425DetailforSelected5MinuteInterval]£0L丫加AciMryJ%5bh1umdp41hrajSELECTr 『;;Idd^afipieCaml1.Sfi?HUlTiEiL口」D6CThir:ClwniEi曲L沁M■址肚皿□Sch亡dul燈?aSlbflSLNefcWfark■酯仃価巧U菽曲Qoufinur也加一■中血匹—AepJk冊顧Cvnturi?nLyLfCL12.14弘鴨頃計畐兇5PUSCLEXECUTEVIex*|TopSessinns二Sess]??h (TM£V1-■M181176則哺合qiwdan PLTSQLEI€CUTEjecti73flhwhmrttflS£LECi50>/5飾2^1用1_1詔SELECT(O I怕隨4也匹呷SELECTQ —工|煌4申山旳01SELECTADEVSRVgelcuitsnllwg@矽堆侶&?(TNSVl-vajYKLJhlA^BWd川036WUPEDDAN及sqlplu:^.h魅TopActivityDragtheshadedba対1口change1即mEimeperiodfarthed<e1ailseelionhelm.°m%.C75.10 5:15 520 525 6.30 5.35 5.40 5.^5 5.50 5:55 缸0 5.05MOv12.2W”聞:SQLTimlMQAd旳叩「「E溟LplTi」葉閃?yj|MLH>Dhgn時泅:卩卄SELECT也門乩I蚯;SELECTSMiCarfaiaselect;|B^triign詢[iic刖曲_a■皿聯S79hj847對于分析指定時段內的頂級消耗、會話等一目了然。上圖中負載均以AverageActiveSessions(AAS)平均活動會話進行計算。每一個會話執行過程如下:Query1,Query1,jL.Qua72而每一個語句在執行過程又可以分解為不同活動時間:CPU執行中、等待IO或其它資源中,即可分為CPU、IO、WaitDatabaseDatabaseCPUI10Wait當有多個會話連接到庫,并活動時:

時間210:C5|jWaitingIIReading(I/O)口Working(CPU)OJdl&Se^^joti2Session2Session時間210:C5|jWaitingIIReading(I/O)口Working(CPU)OJdl&Se^^joti2Session2Session410:15SnapshotTimes10:10UH14AaJNW* ?h*??1i?M**f ■*?**! ■■*■**■ ■■*1^AiMM-HI■■'TP'fhFWV"?■????ftBfiMMgiAuHwa*.saidurtMfA>r?^gIeHvRnr^ Rjjmf;酈區華1遇塾蚤半護基命圈⑥矗半C前圏怡會F圏l*rFin.*.Eii?4n^Mia h?w■■*4^Ldit(dis?j*基丸辦紀%e晝先譏c悅怡區i^c呪憶通過時間片段來看同一時刻有多少會話處于活動狀態,而該值為AAS值,以相同方法以sql語句維度統計該時刻活動,則找出頂級活動SQL,同樣可以計算頂級活動program、user、會話等待。。由于DBTime-某一時段時間總和,故頂級活動SQL即為TOPSQL,所以AAS=DBTime/elapsedtime(歷時),之所以該指標叫做黃金指標,通過AAS指標可以衡量一個系統的繁忙程度,這里有個CPU時間片概念,每一個CPU時間由操作系統分成CPU時間片,然后CPU時間片輪詢模式分配給線程或進程(視操作新系統而定),在最小單位CPU片段內整個系統允許的最大允許數為cpu個數,故通過比較AAS值與CPU之間可以衡量數據庫繁忙度,與CPU數量關聯分析:AAS/CPU_Count?=0非常空閑AAS/CPU_Countv=0.5沒堵塞AAS/CPU_Count<1部分進程已達100%,應用開始出現緩慢AAS/CPU_Count>或>>1出現性能問題或堵死、HANG狀態AAS在Oracle中OEM、ASH中的應用:OEM中:ActiveSessionsIMajiimum亡尸UZ7.0S.IJ5.0ActiveSessionsIMajiimum亡尸UZ7.0S.IJ5.0402Q2010QQ1:10pm 1:2Qprn 1-^Opm lYQprn -l-SiJpfli HGOpmi-S3UserIK>SystemI/O河Schsdjler◎Uh酣rjutworkC&nligur^rtji&nConcurrencyGqeti:.母ppfEtkiiiA-drmi^rdti'eCPUUsedSOL尺弓背pwnw》Tim?%Barelinei爭'■empty.j-0.75HiighAvailabilityInstance1RigcoveryTime(eqdJi56L?islBackup n怙UssbleFlashRecovefyArsa(%) 100尸l^^lhb^ck pi導ASH:CPUsSGASizeBufferCacheSharedPoolASHBufferSize304293.595M(100%}165.376M(56.3%)27.739M(9.4%)H(%}SampleTimeDataSourceAnalysisBeginTime:07-Jun-1417:10:00□BAHISTACTIVESESSHISTORYinAWRsnapshot17358AnalysisEndTime:O7-Jun-1417:30:00□BA_HIST_ACTIVE_SESS_HISTORYinAWRsnapshot17353+V$ACTIVESESSI0NHISTORYElapsedTime:20.0(mins}SampleCount:69,076AverageActiveSessions:575.63Avg.ActiveSessionperCPU:1.50ReportTarget:NonEspecified

TopUserEventsEventEventClass%EventAvgActivelibrarycachelockConcurrency&4.41313.19cursor:pinSwaitonXConcurrency11.6166.86librarycache;mutexXConcurrency10.175S.53latchfreeOther6.4437.07CPU+WaitforCPUCPU4.53^6.10從Oracle數據庫10g開始增加V$ACTIVE_SESSION_HISTORY視圖,通過它可以容易地得知當前Instance的活動狀態,主要是各個時刻系統都在等待哪些事件,通過對這些等待事件和相應等待次數的統計,就可以清晰地了解系統的歷史工作負載特征和壓力情況。此視圖提供了大量寶貴的信息,而且不需要繁重的跟蹤活動ASH數據采集有mmon進程與mmnl進程負責:快照由MMON和MMNL后臺進程自動地每隔固定時間采樣一次。MMON進程負責:當某個測量值(metrics)超過了預設的限定值(thresholdvalue)后提交警告創建新的MMON隸屬進程(MMONslaveprocess)來進行快照(snapshot)捕獲最近修改過的SQL對象的統計信息MMNL進程負責執行輕量級的且頻率較高的后臺任務,如捕獲會話歷史信息,測量值計算等。AWR的采樣工作由MMON進程每個1小時執行一次,ASH信息同樣會被采樣寫出到AWR負載庫中。ASHbuffer根據被設計為保留1小時的信息,但很多時候這個內存是不夠的,當ASHbuffer寫滿后,另外一個后臺進程MMNL將會主動將ASH信息寫出。ASHbuffer大小-按照公式SizeofASHCircularBuffer=Max[Min[#CPUs*2MB,5%ofSharedPoolSize,30MB],1MB]計算,默認1M左右,該參數可以同隱含參數進行調整:"_ash_size"隱含參數控制ashbuffer的大小ASH對應視圖關系為:通過按分鐘從v$active_session_history視圖采集數據,展示如下:T192160111143箋T192160111143箋.F會話?1&QLID<w54b7用口svs詛L襄主SELECT19.5yz^sSudb^^fxqx-SYSSELECT9_43AvatZrfMgvt^Wvat2dlORACLE143SELECT■5?Q

溫馨提示

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

評論

0/150

提交評論