性能分析_statpack的配置與應用

        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');

 

 

           

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章