ORACLE性能診斷―學(xué)習(xí)statspack筆記(一) [安裝與測(cè)試]
2024-08-29 13:30:51
供稿:網(wǎng)友
oracle性能診斷―學(xué)習(xí)statspack筆記(一)
作者:劉穎博
時(shí)間:2004-3-2
mail:[email protected],請(qǐng)指正
轉(zhuǎn)載請(qǐng)注明出處及作者
說(shuō)明:oracle8.1.6開(kāi)始引進(jìn)statspack,statspack是診斷oracle性能的強(qiáng)有力的工具
安裝前準(zhǔn)備
a.首先是系統(tǒng)參數(shù)的確認(rèn):
job_query_processes:為了建立自動(dòng)任務(wù),執(zhí)行數(shù)據(jù)收集,該參數(shù)要大于0
time_statistics:為了收集操作系統(tǒng)計(jì)時(shí)信息等,需要將其設(shè)置為true
b.建議最好是單獨(dú)的為perfstat用戶(hù)(即安裝statspack要建的用戶(hù))單獨(dú)建立數(shù)據(jù)表空間和臨時(shí)表空間,數(shù)據(jù)表空間至少要有100m的空閑空間,否則創(chuàng)建statspack對(duì)象會(huì)失敗,如果打算長(zhǎng)期使用statspack,可以考慮建稍大些的數(shù)據(jù)表空間。
安裝
a.安裝腳本
安裝的腳本所在目錄是$oracle_home/rdbms/admin,在oracle8.1.6版本安裝腳本是statscre.sql,之后8.1.7版本開(kāi)始就是spcreate.sql,安裝所需用戶(hù)在9i之前的需要internal或者擁有sysdba權(quán)限的用戶(hù),9i需要的用戶(hù)是sys(9i已經(jīng)不存在internal用戶(hù)了)
執(zhí)行安裝腳本如下:
sql> @$oracle_home/rdbms/admin/spcreate
b.在安裝過(guò)程中,需要填寫(xiě)perfstat用戶(hù)的密碼,并且選擇perfstat用戶(hù)的數(shù)據(jù)表空間和臨時(shí)表空間,安裝完成之后,察看相應(yīng)的.lis文件檢查安裝是否正確無(wú)誤,有問(wèn)題可以通過(guò)spdrop.sql完成statspack的卸載,重新運(yùn)行spcreate.sql完成statspack的安裝。
測(cè)試
最簡(jiǎn)單的statspack報(bào)告生成,運(yùn)行兩次statspack.snap,然后運(yùn)行spreport.sql生成一個(gè)基于兩個(gè)時(shí)間點(diǎn)的報(bào)告。如果是8.1.7.3之前版本的oracle,需要修改spcpkg.sql,要將substr修改為substrb,如下位置:
select l_snap_id
, p_dbid
, p_instance_number
, substr(sql_text,1,31) à substrb(sql_text,1,31)
建立簡(jiǎn)單的statspack報(bào)告過(guò)程如下:
sql> execute statspack.snap
pl/sql procedure successfully completed.
sql> execute statspack.snap
pl/sql procedure successfully completed.
sql> @$oracle_home/rdbms/admin/spreport
spreport的執(zhí)行過(guò)程中會(huì)列出需要選擇的快照,你需要填寫(xiě)該報(bào)告描述的開(kāi)始和結(jié)束的快照序號(hào),并填寫(xiě)報(bào)告的文件名,當(dāng)然可以不填,使用默認(rèn)的報(bào)告文件名,默認(rèn)的會(huì)生成在目錄$oracle_home/rdbms/admin中
這樣就可以驗(yàn)證statspack已經(jīng)正確的安裝完成了
自動(dòng)收集statspack快照
正常在真正的環(huán)境下,我們是需要連續(xù)的采樣一段時(shí)間,這樣生成的statspack才能更好的反映系統(tǒng)的現(xiàn)狀,我們是可以通過(guò)spauto.sql來(lái)自動(dòng)收集數(shù)據(jù)的。
主要可能會(huì)設(shè)計(jì)到修改如下部分的內(nèi)容
variable jobno number;
variable instno number;
begin
select instance_number into :instno from v$instance;
dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'hh'), 'trunc(sysdate+1/24,''hh'')', true, :instno);
commit;
end;
/
主要是修改1/24這個(gè)值,目前是一個(gè)小時(shí)自動(dòng)收集一次數(shù)據(jù),如果要改動(dòng)為半個(gè)小時(shí)收集一次數(shù)據(jù)就修改為1/48,同理,進(jìn)行或大或小的修改。
執(zhí)行后,可以在spauto.lis文件中看到當(dāng)前自動(dòng)收集數(shù)據(jù)的job號(hào)等信息。當(dāng)想要生成statspack報(bào)告的時(shí)候,只要選擇任何兩個(gè)不跨越停機(jī)時(shí)間的快照序號(hào)就可以了。注意,statspack是不能跨越停機(jī)的。
(待續(xù))
……………………………………………………………………………………
感謝 eygle 和他的《statspack使用指南》一文