oracle自帶一款性能分析工具statpack,功能非常強大.通過statpack記錄數據庫狀態,容易找出oracle瓶頸所在,提供實施數據庫優化的依據.
1.確保以下兩個參數值正確設置.
SYS>show parameter job_queue_processes; 確保參數值大於0,如果=0,則需要調整一下.
SYS>alter system set job_queue_processes=10;
SYS>show parameter timed_statistics; 參數值應爲"true",否則要做修改.
SYS>alter system set parameter timed_statistics=true;
2.創建用戶的表空間和臨時表空間.
SYS>create tablespace perfstat1 datafile '/u01/app/oracle/perfstat1.dbf ' size 500m autoentend on extent management local ;
SYS>create temporary tmp1 tempfile '/u02/temp/tmp1.dbf ' size 100m extent management local;
3.爲用戶perfstat指定密碼,表空間和臨時表空間.
SYS>@$ORACLE_HOME/rdbms/admin/spcreate.sql; 其中"@$ORACLE_HOME"可以用"@?"來代替輸入.
Specify PERFSTAT password : verygood
Specify PERFSTAT user's default tablespace: perfstat1
Specify PERFSTAT user's temporary tablespace: tmp1
如果在創建的時候出錯,可以刪掉用戶perfstat,再重建.
SYS>@?/rdbms/admin/spdrop.sql;
如果想刪掉用戶perfstat,首先要關掉數據庫,然後重啓,掛載並確保數據庫打開.
SYS>shutdown immediate;
SYS>startup mount;
SYS>alter database open;
SYS>drop user perfstat cascade; 添加"cascade"表示連用戶的對象一併刪掉.
4.生成數據庫的快照.注意兩張快照的生成有時間間隔.
SYS>execute statpack.snap;
查看快照收集統計信息的情況.
SYS>select snap_id,snap_time,startup_time from stats$snapshot;
5.當然,我們也可以設置statpack自動收集統計信息.
SYS>@?/rdbms/admin/spauto.sql; 通過修改腳本中的參數,來設置採集時間間隔.
1/24 HH 每小時一次.
1/48 HH 每半小時一次.
1/144 HH 每十分鐘一次.
1/288 HH 每五分鐘一次.
6.清除所統計的信息內容:
SYS>@$ORACLE_HOME/rdbms/admin/sptrunc.sql;
生成統計報告:
SYS>@$ORACLE_HOME/rdbms/admin/spreport.sql;
7. 如果想要移除自動採集功能,可以先查看job號,
SYS>select job,job_user,priv_user,last_date,next_date,interval from user_jobs;
如果查得job號爲22,再執行如下:
SYS>execute dbms_jobs.remove('22');