ORACLE性能診斷―學習statspack筆記(一) [安裝與測試]
2024-08-29 13:49:04
供稿:網友
Oracle性能診斷―學習statspack筆記(一)
作者:劉穎博
時間:2004-3-2
mail:liuyingbo@126.com,請指正
轉載請注明出處及作者
說明:oracle8.1.6開始引進statspack,statspack是診斷oracle性能的強有力的工具
安裝前預備
A.首先是系統參數的確認:
job_query_PRocesses:為了建立自動任務,執行數據收集,該參數要大于0
time_statistics:為了收集操作系統計時信息等,需要將其設置為TRUE
B.建議最好是單獨的為perfstat用戶(即安裝statspack要建的用戶)單獨建立數據表空間和臨時表空間,數據表空間至少要有100M的空閑空間,否則創建statspack對象會失敗,假如打算長期使用statspack,可以考慮建稍大些的數據表空間。
安裝
A.安裝腳本
安裝的腳本所在目錄是$ORACLE_HOME/rdbms/admin,在oracle8.1.6版本安裝腳本是statscre.sql,之后8.1.7版本開始就是spcreate.sql,安裝所需用戶在9i之前的需要internal或者擁有sysdba權限的用戶,9i需要的用戶是sys(9i已經不存在internal用戶了)
執行安裝腳本如下:
SQL> @$ORACLE_HOME/rdbms/admin/spcreate
B.在安裝過程中,需要填寫perfstat用戶的密碼,并且選擇perfstat用戶的數據表空間和臨時表空間,安裝完成之后,察看相應的.lis文件檢查安裝是否正確無誤,有問題可以通過spdrop.sql完成statspack的卸載,重新運行spcreate.sql完成statspack的安裝。
測試
最簡單的statspack報告生成,運行兩次statspack.snap,然后運行spreport.sql生成一個基于兩個時間點的報告。假如是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)
建立簡單的statspack報告過程如下:
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的執行過程中會列出需要選擇的快照,你需要填寫該報告描述的開始和結束的快照序號,并填寫報告的文件名,當然可以不填,使用默認的報告文件名,默認的會生成在目錄$ORACLE_HOME/rdbms/admin中
這樣就可以驗證statspack已經正確的安裝完成了
自動收集statspack快照
正常在真正的環境下,我們是需要連續的采樣一段時間,這樣生成的statspack才能更好的反映系統的現狀,我們是可以通過spauto.sql來自動收集數據的。
主要可能會設計到修改如下部分的內容
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這個值,目前是一個小時自動收集一次數據,假如要改動為半個小時收集一次數據就修改為1/48,同理,進行或大或小的修改。
執行后,可以在spauto.lis文件中看到當前自動收集數據的job號等信息。當想要生成statspack報告的時候,只要選擇任何兩個不跨越停機時間的快照序號就可以了。注重,statspack是不能跨越停機的。
(待續)
……………………………………………………………………………………
感謝 eygle 和他的《statspack使用指南》一文