Statspack之四-測試安裝好的Statspack

liuya1985liuya發表於2007-12-27

執行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

 

 

可是有可能你會得到以下錯誤:

 

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",然後重新執行該指令碼。

該指令碼錯誤部分:

 

 

select l_snap_id

, p_dbid

, p_instance_number

, substr(sql_text,1,31)

...........

 

 

substr 會將多位的字元, 當作一個byte.substrb 則會當作多個byte。在收集資料時, statpack 會將 top 10
的 sql 前 31 個位元組存入資料表中,若在SQL的前31 個字有中文,就會出現此錯誤。

原文地址:http://www.eygle.com/statspack/statspack04.htm

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8750110/viewspace-6707/,如需轉載,請註明出處,否則將追究法律責任。

相關文章