程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> 分析Oracle生成Statpack步驟

分析Oracle生成Statpack步驟

編輯:關於Oracle數據庫
1、telnet到遠程的數據庫服務器
CMD>telnet 遠程數據庫的IP
2、切換到數據庫的用戶
DQXXDBS01:/> su - oracle
3、用超級用戶進入數據庫
$ sqlplus "/as sysdba"
4、查看參數,是否可以用job(可以用job進行自動的收集Statpack Report的數據)
SQL> show parameter job_queue_processes
5、該參數可以收集操作系統的信息
SQL> show parameter timed_statistics
6、為了創建表空間,表空間的數據文件放在哪比較好
代碼如下:

SQL> select file_name from dba_data_files;

7、查看哪個目錄的空間比較大,確定perfstat表空間的數據文件的位置
$ df -g
8、創建表空間:
代碼如下:

SQL> create tablespace perfstat datafile '/oracle/product/10.2.0/db_1/dbs/perfstat.dbf'size 500M;

--表空間用於存儲快照時搜集的數據
9、創建Statspack需要的腳本
SQL> @:/oracle/product/10.2.0/db_1/rdbms/admin/spcreate.sql --"/oracle/product/10.2.0/db_1/rdbms/admin/"為腳本目錄
運行該腳本後,輸入perfstat_password、default_tablespace、temporary_tablespace
10、測試是否成功,生成數據庫的一個快照
SQL> execute statspack.snap
11、再生成一個快照
SQL> execute statspack.snap
12、取兩個快照之間時間段的Statspack報告
SQL> @/oracle/product/10.2.0/db_1/rdbms/admin/spreport.sql
輸入生成Statspack報告的起始點和終止點,如上生成了兩個時間點的快照,輸入begin_snap:1和end_snap:2,然後輸入生成快照的名稱(如1.txt)
--備注:如果沒有指定報告放置的位置,則該報告在啟動sqlplus時所在的路徑
13、用job進行定時產生Statspack的快照,便於收集數據(默認為1小時產生一個快照)
SQL> @/oracle/product/10.2.0/db_1/rdbms/admin/spauto.sql
14、刪除歷史數據
select max(snap_id) from stats$snapshot;--刪除stats$snapshot表中的相應數據,其他表中的相應數據也會級連刪除
delete from stats$snapshot where snap_id<3;
也可以通過執行sptrunc.sql該腳本直接刪除這些統計表的信息
注意事項:
1、生成需要的Statspack之後,記住移除任務,查看任務:
SQL> select job, log_user, priv_user, last_date,next_date, interval from user_jobs;
2、移除生成Statspack快照的任務:
SQL> execute dbms_job.remove('41')
3、如果在運行spcreate.sql這個腳本出錯的話,可以通過運行spdrop.sql這個腳本刪除創建的對象,然後再執行spcreate.sql
4、運行spcreate.sql這個腳本後,可以查找相關的lis文件查看安裝信息(在sqlplus默認路徑下)
其他相關的一些腳本
1、spuexp.par腳本 --可用於導出statpack報告相關的數據的dmp,如下所示
exp userid=perfstat/fyzh parfile=spuexp.par
注意:spuexp.par文件必須在sqlplus登陸的當前路徑。如登陸的sqlplus路徑是C:\Documents and Settings\Administrator,
那麼spuexp.par就要在該目錄下,否則提示“LRM-00109: 無法打開參數文件 'spuexp.par'”
2、sprepsql.sql腳本 --用於根據給定的sql hash值生成sql報告
調整STATSPACK的收集門限
Statspack有兩種類型的收集選項:
級別(level):控制收集數據的類型
門限(threshold):設置收集的數據的阈值.
1、級別(level)
Statspack共有三種快照級別,默認值是5
a.level 0: 一般性能統計.包括等待事件、系統事件、系統統計、回滾段統計、行緩存、SGA、會話、鎖、緩沖池統計等等.
b.level 5: 增加SQL語句.除了包括level0的所有內容,還包括SQL語句的收集,收集結果記錄在stats$sql_summary中.
c.level 10: 增加子鎖存統計.包括level5的所有內容.並且還會將附加的子鎖存存入stats$lathc_children中.在使用這個級別時需要慎重,建議在Oracle support的指導下進行.
可以通過statspack包修改缺省的級別設置
SQL> execute statspack.snap(i_snap_level=>0,i_modify_parameter=>'true');
如果你只是想本次改變收集級別,可以忽略i_modify_parameter參數.
SQL> execute statspack.snap(i_snap_level=>0);
2、快照門限
快照門限只應用於stats$sql_summary表中獲取的SQL語句.
因為每一個快照都會收集很多數據,每一行都代表獲取快照時數據庫中的一個SQL語句,所以stats$sql_summary很快就會成為Statspack中最大的表.
門限存儲在stats$statspack_parameter表中:
executions_th這是SQL語句執行的數量(默認值是100)
disk_reads_tn這是SQL語句執行的磁盤讀入數量(默認值是1000)
parse_calls_th這是SQL語句執行的解析調用的數量(默認值是1000)
buffer_gets_th這是SQL語句執行的緩沖區獲取的數量(默認值是10000)
任何一個門限值超過以上參數就會產生一條記錄.
通過調用statspack.modify_statspack_parameter函數改變門限的默認值:
代碼如下:

SQL>execute statspack.modify_statspack_parameter(i_buffer_gets_th=>100000,i_disk_reads_th=>100000);
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved