前瞻性在Oracle數(shù)據(jù)庫維護(hù)中的作用
數(shù)據(jù)庫管理員必須自始自終都密切關(guān)注可能會(huì)對他們所管理的各個(gè)系統(tǒng)的可用性或者性能有負(fù)面影響的潛在數(shù)據(jù)庫問題。通常情況下,可以把數(shù)據(jù)庫管理員監(jiān)視、維護(hù)系統(tǒng)的方式分為兩種,分別為反應(yīng)性監(jiān)視與前瞻性監(jiān)視。
如上圖所示,反應(yīng)性監(jiān)視是指在已經(jīng)出現(xiàn)一個(gè)性能或者管理問題后再對數(shù)據(jù)庫進(jìn)行監(jiān)視。例如有員工向數(shù)據(jù)庫管理員反應(yīng)應(yīng)用系統(tǒng)的速度比較慢。數(shù)據(jù)庫管員跟其他技術(shù)人員共同會(huì)診后發(fā)現(xiàn)是由于數(shù)據(jù)庫的原因所造成的。此時(shí)數(shù)據(jù)庫管理員就需要使用相關(guān)的工具來收集數(shù)據(jù)庫的運(yùn)行數(shù)據(jù),以查明問題發(fā)生的原因。雖然這最終也可以順利把問題解決,但是這畢竟與優(yōu)秀數(shù)據(jù)庫管理員心中的期望還有一點(diǎn)距離。因此反應(yīng)性監(jiān)視有點(diǎn)像放馬后炮的感覺。問題已經(jīng)出現(xiàn),即使數(shù)據(jù)庫管理員能夠在最短時(shí)間內(nèi)查明原因、解決問題,但是畢竟對于用戶產(chǎn)生了一些不利的影響。故數(shù)據(jù)庫管理員希望能夠在故障發(fā)生之前就能夠了解導(dǎo)致這個(gè)故障發(fā)生的原因,并及時(shí)采取有效措施預(yù)防這種故障的最終發(fā)生。這就使數(shù)據(jù)庫管理員所期待的前瞻性監(jiān)視。
前暫性監(jiān)視可以讓數(shù)據(jù)庫管理員在問題出現(xiàn)之前、期間或者之后查處并響應(yīng)數(shù)據(jù)庫常見的性能與管理問題。簡單的說,在某一個(gè)數(shù)據(jù)庫故障發(fā)生之前,都會(huì)有一些征兆。這就好像一些自然災(zāi)害發(fā)生時(shí),像螞蟻、燕子等等都會(huì)有一些異常的反應(yīng)。數(shù)據(jù)庫管理員有必要了解這些征兆。如此的話,我們才能夠把這些問題消除來萌芽狀態(tài),防止問題的擴(kuò)大。
Oracle數(shù)據(jù)庫設(shè)計(jì)者們也一直在往這個(gè)方向努力。如在10G以后的數(shù)據(jù)庫版本中,就有了一個(gè)自動(dòng)工作負(fù)荷儲(chǔ)存庫的功能,來幫助數(shù)據(jù)庫管理員收集在數(shù)據(jù)庫運(yùn)行中的異常數(shù)據(jù)。通過這些數(shù)據(jù)的幫助,數(shù)據(jù)庫管理員可以搶在數(shù)據(jù)庫故障發(fā)生之前把問題解決了。
一、自動(dòng)工作負(fù)荷存儲(chǔ)庫的特點(diǎn)。
自動(dòng)工作負(fù)荷存儲(chǔ)庫主要是通過兩個(gè)回退進(jìn)程實(shí)現(xiàn)的,分別為內(nèi)存監(jiān)視器與內(nèi)存監(jiān)視燈。這兩個(gè)進(jìn)程是一對雙胞胎數(shù)據(jù),他們可以給數(shù)據(jù)庫管理員帶來很大的幫助。如這兩個(gè)進(jìn)程會(huì)相互合作,從數(shù)據(jù)庫系統(tǒng)全局區(qū)中直接收集性能統(tǒng)計(jì)數(shù)據(jù)。如數(shù)據(jù)庫服務(wù)器CPU內(nèi)存的使用率等等。其中內(nèi)存監(jiān)視器在其中擔(dān)任主要角色。默認(rèn)情況下,內(nèi)存監(jiān)視器每個(gè)小時(shí)會(huì)啟動(dòng)一次,并從數(shù)據(jù)動(dòng)態(tài)性能視圖、數(shù)據(jù)庫目錄視圖和數(shù)據(jù)庫優(yōu)化器中收集性能等相關(guān)的統(tǒng)計(jì)信息,然后會(huì)把這些信息存儲(chǔ)在數(shù)據(jù)庫的表中。這個(gè)表就叫做自動(dòng)工作負(fù)荷存儲(chǔ)庫表。通常情況下,這個(gè)表被Sysman用戶所擁有,并被存儲(chǔ)在Sysaux表空間中。
二、啟用自動(dòng)工作負(fù)荷存儲(chǔ)庫并進(jìn)行相關(guān)的配置。
如果數(shù)據(jù)庫管理員需要啟用這個(gè)自動(dòng)工作負(fù)荷存儲(chǔ)庫功能,則需要手工對此啟動(dòng)。默認(rèn)情況下數(shù)據(jù)庫是不會(huì)啟動(dòng)這項(xiàng)功能的。筆者的意見是,在數(shù)據(jù)庫設(shè)計(jì)或者測試的時(shí)候,不用啟動(dòng)這項(xiàng)功能。畢竟其本身需要耗用服務(wù)器一定的資源。但是在生產(chǎn)服務(wù)器(即企業(yè)已經(jīng)在使用的Oracle數(shù)據(jù)庫)系統(tǒng)中,最好啟用這項(xiàng)功能。以幫助數(shù)據(jù)庫管理員自動(dòng)收集數(shù)據(jù)庫的運(yùn)行性能信息,以實(shí)現(xiàn)前瞻性監(jiān)視的目標(biāo)。
如果想要啟用自動(dòng)工作負(fù)荷存儲(chǔ)庫功能,則需要配置數(shù)據(jù)庫中的Statistics_level這個(gè)參數(shù)。這個(gè)參數(shù)主要有三個(gè)值,用來決定內(nèi)存監(jiān)視器進(jìn)程收集統(tǒng)計(jì)數(shù)據(jù)的深度與頻率等等。如數(shù)據(jù)庫的規(guī)模比較小或者應(yīng)用時(shí)間不長的話,可以把這個(gè)參數(shù)設(shè)置為Basic。在這個(gè)參數(shù)下,數(shù)據(jù)庫雖然已經(jīng)啟用了自動(dòng)工作負(fù)荷存儲(chǔ)庫,但是會(huì)禁用這項(xiàng)功能的大多數(shù)爭端監(jiān)視以及顧問活動(dòng)。也就是說,此時(shí)數(shù)據(jù)庫管理員啟動(dòng)數(shù)據(jù)庫實(shí)例時(shí),系統(tǒng)只會(huì)收集少量的數(shù)據(jù)庫運(yùn)行時(shí)的統(tǒng)計(jì)數(shù)據(jù)。當(dāng)數(shù)據(jù)庫規(guī)模比較大時(shí)這些數(shù)據(jù)往往不能夠幫助數(shù)據(jù)庫管理員排查故障發(fā)生的原因。如果數(shù)據(jù)庫設(shè)計(jì)比較復(fù)雜或者企業(yè)對于數(shù)據(jù)庫的性能要求比較高,則此時(shí)數(shù)據(jù)庫管理員可以把這個(gè)參數(shù)設(shè)置為ALL,這是自動(dòng)工作負(fù)荷存儲(chǔ)庫收集統(tǒng)計(jì)數(shù)據(jù)的最高級別。在這個(gè)級別下,內(nèi)存監(jiān)視器將會(huì)捕獲大部分的統(tǒng)計(jì)數(shù)據(jù),同時(shí)還會(huì)收集來自操作系統(tǒng)的執(zhí)行計(jì)劃和定時(shí)信息。如Oracle數(shù)據(jù)庫的自動(dòng)備份有時(shí)候需要操作系統(tǒng)的任務(wù)計(jì)劃的幫助下才能夠完成。那么此時(shí)數(shù)據(jù)庫管理員就需要考慮數(shù)據(jù)庫性能下降的原因是否跟這個(gè)操作系統(tǒng)的任務(wù)計(jì)劃有關(guān)。此時(shí)內(nèi)存監(jiān)視器收集起來的跟操作系統(tǒng)相關(guān)的計(jì)劃與定時(shí)信息就會(huì)非常的有用。不過有時(shí)候數(shù)據(jù)庫管理員可能只需要收集數(shù)據(jù)庫自深的運(yùn)行信息,而不需要操作系統(tǒng)的相關(guān)信息。此時(shí)就可以把這個(gè)參數(shù)設(shè)置為Typical。這個(gè)參數(shù)是自動(dòng)工作負(fù)荷存儲(chǔ)庫的標(biāo)準(zhǔn)級別,他會(huì)收集跟數(shù)據(jù)庫自深相關(guān)的統(tǒng)計(jì)信息。
【編輯推薦】