statspack 安裝以及相關引數說明

aishu521發表於2013-01-07
1,檢查引數
SQL> show parameter job_qu
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes                  integer     10
SQL> show parameter timed_sta
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
timed_statistics                     boolean     TRUE
SQL> create tablespace perfstat
  2  datafile '/u02/oradata/zdtdbat5/perfsta.dbf' size 500m
  3  autoextend on next 32M;
Tablespace created.
2,執行路徑
SQL> ! pwd
/u01/app/oracle/product/10.2.0/db_1/rdbms/admin

3.sqlplus 執行指令碼:
@?\rdbms\admin\spcreate.sql
輸入 perfstat_password 的值:  perfstat
輸入 default_tablespace 的值:  perfstat
輸入 temporary_tablespace 的值: temp
4,可以檢視生成的檔案報告
[oracle@zdtdbat4 admin]$ ls *.lis
spcpkg.lis  spctab.lis  spcusr.lis
執行一次簡單的操作:
以perfstat使用者連線,如果你剛執行完@spcreate,則oracle預設將當前使用者切換為perfstat。
首先生成兩次取樣。
5,開始取樣
SQL>execute statspack.snap

PL/SQL procedure successfullycompleted.

SQL>execute statspack.snap

PL/SQL procedure successfullycompleted.

執行@spreport生成報告(該檔案物理存放路徑與spcreate相同)。

6,生成報告
SQL> @spreport
輸入 begin_snap 的值:  1
Begin Snapshot Id specified: 1

輸入 end_snap 的值:  2
End   Snapshot Id specified: 2
Specify the Report Name  test

End of Report ( test.lst )
7,規劃自動任務
設定定時執行任務,開始收集資料了,使用spatuo.sql來定義任務
[oracle@zdtdbat4 admin]$ ls spa*
spauto.sql
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 HH   每小時一次
1/48 MI   每半時一次
1/144 MI  每十五分鐘一次
1/288 MI   每5分鐘一次
可以修改時間點來修改執行頻率
begin
  select instance_number into :instno from v$instance;
  dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/48,'MI'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
  commit;
end;
執行@spauto.sql使得生效。
SQL> @spauto.sql
PL/SQL procedure successfully completed.

Job number for automated statistics collection for this instance
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Note that this job number is needed when modifying or removing
the job:
     JOBNO
----------
        21

Next scheduled run
~~~~~~~~~~~~~~~~~~
The next scheduled run for this job is:
       JOB NEXT_DATE NEXT_SEC
---------- --------- ----------------
        21 07-JAN-13 09:40:00
一個statspack的報告不能跨越一次停機 但之前或之後收集資訊依然有效。跨越選擇前後的報告report
8,移除定時執行任務
SQL> select job,log_user,priv_user,last_date,next_Date,interval from user_jobs;
       JOB LOG_USER                       PRIV_USER
---------- ------------------------------ ------------------------------
LAST_DATE NEXT_DATE
--------- ---------
INTERVAL
------------------------------------------------------------------------------
        21 PERFSTAT                       PERFSTAT
          07-JAN-13
trunc(SYSDATE+1/24,'HH')
SQL> execute dbms_job_.remove('21');
9,刪除歷史資料
SQL> select max(snap_id) from stats$snapshot;
MAX(SNAP_ID)
------------
           2
SQL> delete from stats$snapshot snap_id<2;
你可以更改snap_id的範圍保留需要的資料
,你可以檢視到相關的表都鎖定
select a.OBJECT_ID,a.ORACLE_USERNAME,b.object_name
from v$locked_object a ,dba_objects b
where a.OBJECT_ID=b.object_id
10,其他重要指令碼
  a,在診斷系統問題時,可能需要向專業人士提供資料 可以匯出statspack 表資料
用的是  spuexp.par
[oracle@zdtdbat4 admin]$ ls spuexp.par
spuexp.par
[oracle@zdtdbat4 admin]$ exp userid=perfstat/my perfstat password parfile=spuexp.par
  b,sqdrop.sql 在執行主要兩個指令碼spdtabl.sql ,spdusr.sql
11,調整statspack的收集門限
  兩種型別
 級別(level):控制收集資料的型別
 門限(shreshold)   設定收集的資料的閥值
 a,級別 預設是5
 0,一般性統計,包含等待事件,系統事件,系統統計,回滾段統計,行快取,sga,會話,鎖,緩衝池統計等
 5,增加sql語句統計
 10,增加子鎖統計 stats$sql_summary中
修改設定級別。
sql > execute statspack.snap(i_snap_level=>0,i_modify_parameter=>'true');
如果執行修改本次
sql > execute statspack.snap(i_snap_level=>0);
 b,快照門限
 門限只應用於stats$sql_summary
 各種門限
 a  executions_sh sql語句執行數量 預設100
 b  disk_reads_tn 執行磁碟讀入數量 預設1000
 c  parse_call_th  執行解析呼叫數量 預設1000
 d  buffer_gets_th  執行緩衝區獲取得數量 預設1000
修改門限預設值
sql > execute statspack.modify statspack parameter(i buffer gets th=>1000000,i disk reads th=>100000;
 
 
注意: 執行的時候記得用使用者:perfstat 或者報錯
ERROR at line 1:
ORA-20200: Begin Snapshot Id
2 does not exist for this database/instance
ORA-06512: at line 28

         1,執行 exec statspack.snap
          2,執行 @?/rdbms/admin/spreport
         就生成報表了.

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

相關文章