使用Utlbstat和Utlestat只能取兩點的資訊,得到效能差異報表,並進行分析,判斷那些是主要影響系統的資訊.但是由於兩點之間的效能差異的不確定性,如操作時間長短,並發數的變化,而收集的資訊是兩點之間的比較,時間越長,收集到的資訊的準確程度越低,收集的時間短,則收集的資訊不全.同時受提供資訊有限所限,隨Oracle版本的發展,現已經被StatSpack取代.
與Utlbstat和Utlestat相比,Statspack不僅僅是取兩點值,還可以取多點資訊,做任意兩點的比較.甚至可以基於某一個關心的點,如等待事件,
把多點資訊產生一個曲線圖,如果曲線圖變化平穩,說明該段時間內,該等待事件運行平穩,發生次數很少,並且發生也在正常充許的範圍之內.如
果曲線變化幅度大,說明該等待事件事件發生頻繁,當前效能差是和該事件有關係的,資源竟爭比較激烈.所以,Statspack能更準確的描述出效能
的變化.
其次,Statspack比Utlbstat和Utlestat多收集了一些資訊.如記憶體中啟動並執行SQL語句資訊,同時可以對語句按一定的條件排序,以方便找出最影
響效能的SQL語句。
第一,Statspack存放位置
和statspack 相關的指令碼全部存放在 D:/oracle/ora92/rdbms/admin/ 目錄下.
第二,Statspack 的安裝方法
Statspack可以認為是一個小軟體包.在運行前需要安裝,執行Oracle的安裝目錄 D:/oracle/ora92/rdbms/admin/下的SPCreate.sql就可以完
成安裝.安裝完成後,以後就可以直接使用,不用再安裝了。
在安裝前,確認參數 TIMED_STATISTICS 為True.(Oracle 8I需要更改,9I預設True)
SQL> show parameter timed_statistics
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
timed_statistics boolean TRUE
更改方法:
SQL> alter system set timed_statistics=true;
系統已更改。
說明:TIMED_STATISTICS 參數用於收集時間資訊.
另外,要確定有沒有可用的資料表空間用來存放StatsPack的相關對象. Oracle8I要求80M以上,Oracle 9i至少要92M以上,最好使用一個空白的資料表空間
.
建立資料表空間的指令碼如下:
SQL>create tablespace sp datafile 'd:/oracle/oradata/ora92/sp01.dbf' size 120M;
資料表空間已建立。
然後,再運行:
SQL> @?/rdbms/admin/spcreate
安裝過程中,提示要輸入 PERFSTAT 使用者的密碼,
... Creating PERFSTAT user ...
Choose the PERFSTAT user's password.
Not specifying a password will result in the installation FAILING
Specify PERFSTAT password
輸入 perfstat_password 的值: perfstat
perfstat
如果是生產資料庫,一定要設好密碼,因為這個使用者有相當的許可權。
最後,指定使用的資料表空間:
Specify PERFSTAT user's default tablespace
輸入 default_tablespace 的值: sp
Using sp for the default tablespace
指定暫存資料表空間:
Choose the PERFSTAT user's temporary tablespace.
Specifying the SYSTEM tablespace will result in the installation
FAILING, as using SYSTEM for the temporary tablespace is not recommended.
Specify PERFSTAT user's temporary tablespace.
輸入 temporary_tablespace 的值: temp
Using temp for the temporary tablespace
提供上述的資訊後,可完成安裝。
如果是在SQL Plus中運行指令碼,如果安裝不成功,SQL Plus會自動不報錯退出。
第三,Statspack的使用,即收集資訊
資訊的收集,可以手動收集,也可以定製任務,讓DB自動收集,但最終都是調用了系統包:statspack.snap來完成資訊收集的。
SQL> exec statspack.snap;
PL/SQL 過程已成功完成。
執行一次,收集一次,需要花費的時間不一定,根據當前系統運行任務的情況而定.
根據調優的要求,要在業務啟動並執行時候收集,所收集的資料才能體現系統正常運行時的狀態.
要產生報告,最少要收集兩點以上,才能產行差異報告.
SQL> exec statspack.snap;
PL/SQL 過程已成功完成。
也可以調用
SQL> @?/rdbms/admin/spauto 來自動執行.
一般來說,Statspack收集資訊的頻度最好是每15分鐘到半小時收集一次.時間的多少和系統和繁忙程度有關.不能影響系統的正常運行.
在收集的兩點之間,不能跨DB重啟.
最後可以調用
SQL> @?/rdbms/admin/spreport
來產生報表,在輸入begin_snap 和End_snap時,要從小到大輸入.
最後要輸入產生報表存放的位置,如不指定,則會放到預設的位置.位置可以是全路徑。
第四。Statspack的卸載
由於Statspack將對象存放在了Sys使用者中,如果手工刪除,將不能全部刪除,下次如果在SQLPlus中安裝,裝不提示退出,不能成功安裝。
可以用下面的方法卸載:
SQL>@?/rdbms/admin/spdrop
就可以完全卸載。