Oracle Statspack Report
1. 1. 設定引數
job_queue_processes 為了能夠建立自動任務,執行資料收集,該引數需要大於0。你可以在初試化引數檔案中修改該引數(使該引數在重起後以然有效)。
timed_statistics 收集作業系統的計時資訊,這些資訊可被用來顯示時間等統計資訊、最佳化資料庫和 SQL 語句。要防止因從作業系統請求時間而引起的開銷,請將該值設定為False。
使用statspack收集統計資訊時建議將該值設定為 TRUE,否則收集的統計資訊大約只能起到10%的作用,將timed_statistics設定為True所帶來的效能影響與好處相比是微不足道的。該引數使收集的時間資訊儲存在在V$SESSTATS和V$SYSSTATS等動態效能檢視中. timed_statistics 可以alter system, alter session 動態修改。 如果擔心timed_statistics 對效能的影響 (影響很小),可以收集資訊完畢之後直接更改回來。
2. 2. 安裝Statspack 需要internal 或SYSDBA許可權的使用者登入。
在Oracle8.1.6版本中執行statscre.sql;在Oracle8.1.7版本中執行spcreate.sql, 目錄是: $ORACLE_HOME/rdbms/admin/ . 最好能到本目錄下登入sqlplus 然後執行兩個指令碼。
3. 3. 建立儲存資料的表空間,如果取樣間隔較短,週期較長,打算長期使用,那麼你可能需要一個大一點的表空間,如果每個半個小時取樣一次,連續取樣一週,資料量是很大的。本例建立一個500M的測試表空間。
SQL> create tablespace perfstat datafile 'd:oracleoradataeygleperfstat.dbf' size 500M extent management local;
4. 執行spcreate.sql
SQL> @spcreate
Specify PERFSTAT user's defaulttablespace
輸入 default_tablespace 的值:perfstat
Using perfstat for the default tablespace
使用者已更改。
使用者已更改。
Specify PERFSTAT user's temporary tablespace
輸入 temporary_tablespace 的值:temp
注意:在statspack建立過程中,當提示輸入口令時,你可以輸入一個明文口令,但是如果輸入口令不符合規範(如123或以數字開頭的口令),建立會失敗。
... Creating PERFSTAT user ...
Choose the PERFSTAT user's password.
Not specifying a password will result in the installation FAILING
Specify PERFSTAT password
輸入 perfstat_password 的值: 123
123
PL/SQL 過程已成功完成。
create user perfstat identified by 123
*
ERROR 位於第 1 行:
ORA-00988: 缺少或無效口令
如果安裝成功,你可以看到如下的輸出資訊:
….
Creating Package STATSPACK...
程式包已建立。
沒有錯誤。
Creating Package Body STATSPACK...
程式包主體已建立。
沒有錯誤。
NOTE:
SPCPKG complete. Please check spcpkg.lis for any errors.
你可以檢視.lis檔案檢視安裝時的錯誤資訊。
在這一步,如果出現錯誤,那麼你可以執行spdrop.sql指令碼來刪除這些物件。然後重新執行spcreate.sql來建立這些物件。執行 SQL*Plus, 以具有SYSDBA 許可權的使用者登陸:
5. 安裝完畢之後,執行statspack.snap可以產生系統快照,執行兩次,然後執行spreport.sql就可以生成一個基於兩個時間點的報告。如果一切正常,說明安裝成功。
SQL>execute statspack.snap
PL/SQL procedure successfully completed.
SQL>execute statspack.snap
PL/SQL procedure successfully completed.
SQL>@spreport.sql
…
注意: 可能得到如下錯誤,bug .
SQL> exec statspack.snap;
BEGIN statspack.snap; END;
*
ERROR at line 1:
ORA-01401: inserted value too large for column
ORA-06512: at "PERFSTAT.STATSPACK", line 978
ORA-06512: at "PERFSTAT.STATSPACK", line 1612
ORA-06512: at "PERFSTAT.STATSPACK", line 71
ORA-06512: at line 1
這是Oracle的一個Bug,Bug號1940915。
該Bug自8.1.7.3後修正。
這個問題只會出現在多位的字符集,需要修改spcpkg.sql指令碼,$ORACLE_HOME/rdbms/admin/spcpkg.sql,將"substr" 修改為 "substrb",然後重新執行該指令碼。
6. 安裝完成之後我們開始設定定時任務,收集資料。可以使用spatuo.sql來定義自動任務。
spauto.sql的關鍵內容:
dbms_job.submit(:jobno, 'statspack.snap;',
trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
1/24 | HH每小時一次 |
1/48 | MI每半小時一次 |
1/144 | MI每十分鐘一次 |
1/288 | MI每五分鐘一次 |
例如:
dbms_job.submit(:jobno, 'statspack.snap;',
trunc(sysdate+1/48,'MI'), 'trunc(SYSDATE+1/48,''MI'')', TRUE, :instno);
每30分鐘執行一次的資料收集計劃。你可以檢視spauto.lis來獲得輸出資訊
關於取樣間隔,我們通常建議以1小時為時間間隔,對於有特殊需要的環境,可以設定更短的,如半小時作為取樣間隔,但是不推薦更短。因為statspack的執行本身需要消耗資源,對於繁忙的生產系統,太短的取樣對系統的效能會產生較大的影響(甚至會使statspack的執行出現在取樣資料中)。
7. 呼叫spreport.sql可以生成分析報告:
SQL> @spreport
注意: 一個statspack的報告不能跨越一次停機,否則會出現錯誤。 但是之前或之後的連續區間,收集的資訊依然有效。你可以選擇之前或之後的取樣生成report。
8.當你完成了一個取樣報告,你應該及時移除這個job任務,在生產環境中,遺漏一個無人照顧的job是非常危險的,如果statspack執行一個星期,取樣的資料量是非常驚人的。有的生產企業因疏忽而當機!
移除一個定時任務,可以如下操作:
SQL> select job,log_user,priv_user,last_date,next_date,interval from user_jobs;
JOB LOG_USERLAST_DATENEXT_DATEINTERVAL
---------- ----------------------------------- ------------------------------ -----------
22 PERFSTAT 2002-12-5:14:33:26 2002-12-5 14:43:00 trunc(SYSDATE+1/144,'MI')
SQL> execute dbms_job.remove('22') ;
刪除stats$snapshot資料表中的相應資料,其他表中的資料會相應的級連刪除:
Oracle還提供了系統指令碼用於Truncate這些統計資訊表,這個指令碼名字是: sptrunc.sql (8i、9i都相同)。 如果取樣了大量的資料,直接Delete是非常緩慢的,可以考慮使用上述SQL截斷所有表。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84955/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- statspack report分析
- statspack report分析 (zt)
- statspack安裝使用和report分析
- statspack安裝使用 和 report 分析
- statspack report分析(AWR也可參考)
- 【筆記】statspack(三) report分析 摘錄筆記
- Oracle之StatspackOracle
- oracle statspack詳解Oracle
- Oracle Statspack的使用Oracle
- Oracle statspack綜合分析Oracle
- oracle statspack 詳解Oracle
- Oracle statspack工具使用解析Oracle
- ORACLE 9i statspack使用Oracle
- oracle statspack 安裝詳解---03Oracle
- Oracle 9i配置Statspack工具(下)Oracle
- Oracle 9i配置Statspack工具(上)Oracle
- Oracle 9i statspack 使用手冊Oracle
- Don't overlook STATSPACK in Oracle 10gOracle 10g
- Oracle Statspack各項指標含義Oracle指標
- oracle10g statspack--安裝Oracle
- Statspack之一-Statspack簡介
- Statspack之三-安裝statspack
- Oracle統計資訊以及statspack怎麼使用Oracle
- oracle 9i statspack詳細講解Oracle
- Oracle EBS Form & Report 問題大全OracleORM
- 【效能優化】Oracle 部署 Statspack並生成報告優化Oracle
- oracle gcr sleep in the Top Timed Events in reportOracleGC
- oracle分析函式之ratio_to_reportOracle函式
- Oracle 10g AWR Report 分析(轉)Oracle 10g
- 【STATSPACK】Statspack安裝、測試與使用
- statspack分析
- statspack解析
- 【效能最佳化】Oracle 部署 Statspack並生成報告Oracle
- Oracle statspack無法收集快照,及解決辦法Oracle
- Oracle SQL調優系列之SQL Monitor ReportOracleSQL
- Oracle Reporting 1 - Ratio_to_Report FunctionOracleFunction
- 【實驗】【STATSPACK】Statspack 安裝、測試與使用
- Statspack之四-測試安裝好的Statspack