Decode360's Blog

          業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks
          一、設定自動執行
          ?
          ??? 修改spauto.sql腳本來設定自動執行任務。
          ?
          ??? 腳本主要內容如下:

          spool spauto.lis
          ?
          variable jobno number;
          variable instno number;
          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;
          /
          ?
          select job, next_date, next_sec
          ? from user_jobs
          ?where job = :jobno;
          ?
          spool off;
          ?
          ??? 主要是修改執行job中的間隔時間,默認的是每個小時進行執行一次采樣,按照實際需要進行采樣間隔時間的設置。對于一些特殊的環境可以采用每30分鐘采樣,但是不推薦更短的間隔時間,因為statspack執行本身需要消耗資源,采樣間隔太短會對系統性能造成比較大的影響。以下是執行腳本:
          ?
          SQL> @E:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\spauto.sql;

          PL/SQL procedure successfully completed
          instno
          ---------
          1
          jobno
          ---------
          21
          ?
          Job number for automated statistics collection for this instance
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          Note that this job number is needed when modifying or removing
          the job:
          jobno
          ---------
          21
          ?
          Job queue process
          ~~~~~~~~~~~~~~~~~
          Below is the current setting of the job_queue_processes init.ora
          parameter - the value for this parameter must be greater
          than 0 to use automatic statistics gathering:
          ?
          NAME???????????????????????????????? TYPE??????? VALUE
          ------------------------------------ ----------- ---------------
          job_queue_processes????????????????? integer???? 10
          ?
          ?
          Next scheduled run
          ~~~~~~~~~~~~~~~~~~
          The next scheduled run for this job is:
          ?
          ?????? JOB NEXT_DATE?? NEXT_SEC
          ---------- ----------- ----------------
          ??????? 21 2009-2-22 1 12:00:00
          jobno
          ---------
          21
          ?
          ?
          二、取消自動執行計劃
          ?
          ??? 取消自動執行計劃只需要移除已建的job即可。
          ?
          ??? SQL> select job,last_date,next_date,interval from user_jobs where log_user='PERFSTAT';
          ?
          ?????????? JOB LAST_DATE????? NEXT_DATE????? INTERVAL
          ??? ---------- -------------- -------------- ----------------------------
          ??????????? 23????????????????2009-2-22 ???? trunc(SYSDATE+1/24,'HH')
          ??? SQL> execute dbms_job.remove('23');
          ?
          ??? PL/SQL procedure successfully completed
          ?
          ??? 注意在完成采樣報告之后一定要記得取消執行計劃,否則Statspack執行一周的數據量是驚人的,嚴重的會造成宕機。
          ?
          ?
          三、生成分析報告
          ?
          ??? 使用spreport.sql腳本來生成分析報告。
          ???
          ??? SQL> @E:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\spreport.sql;
          ??? ... ...
          ??? Enter value for begin_snap:1
          ??? Enter value for end_snap:3
          ??? Enter value for report_name:test
          ??? ... ...
          ?
          ??? 會在當前目錄下生成test.lst的report文檔
          ?
          ??? 注意:選取的兩個snap不能跨越一次停機,否則報錯:
          ??? ORA-20200: The instance was shutdown between snapshots 1 and 21
          ??? ORA-06512: 在 line 49
          ?
          ?
          四、刪除歷史數據
          ?
          ??? 在stats$snapshot表中查找所有的snap序號:
          ?
          ??? SQL> select max(snap_id) from stats$snapshot;
          ?
          ??? MAX(SNAP_ID)
          ??? ------------
          ????????????? 21
          ?
          ??? 在stats$snapshot表中刪除數據后,所有生成的數據會相應得自動刪除完成。
          ?
          ??? SQL> delete from stats$snapshot where snap_id <= 21;
          ?
          ??? 8 rows deleted.
          ?
          ?
          ??? 另外oracle還提供了一個sptrunc.sql的腳本,用以清空statspack相關的所有系統表:
          ?
          truncate table STATS$FILESTATXS;
          truncate table STATS$TEMPSTATXS;
          truncate table STATS$LATCH;
          truncate table STATS$LATCH_CHILDREN;
          truncate table STATS$LATCH_MISSES_SUMMARY;
          truncate table STATS$LATCH_PARENT;
          truncate table STATS$LIBRARYCACHE;
          truncate table STATS$BUFFER_POOL_STATISTICS;
          truncate table STATS$ROLLSTAT;
          truncate table STATS$ROWCACHE_SUMMARY;
          truncate table STATS$SGA;
          truncate table STATS$SGASTAT;
          truncate table STATS$SYSSTAT;
          truncate table STATS$SESSTAT;
          truncate table STATS$SYSTEM_EVENT;
          truncate table STATS$SESSION_EVENT;
          truncate table STATS$BG_EVENT_SUMMARY;
          truncate table STATS$WAITSTAT;
          truncate table STATS$ENQUEUE_STATISTICS;
          truncate table STATS$SQL_SUMMARY;
          truncate table STATS$SQL_STATISTICS;
          truncate table STATS$SQLTEXT;
          truncate table STATS$PARAMETER;
          truncate table STATS$RESOURCE_LIMIT;
          truncate table STATS$DLM_MISC;
          truncate table STATS$UNDOSTAT;
          truncate table STATS$SQL_PLAN;
          truncate table STATS$SQL_PLAN_USAGE;
          truncate table STATS$SEG_STAT;
          truncate table STATS$SEG_STAT_OBJ;
          truncate table STATS$DB_CACHE_ADVICE;
          truncate table STATS$PGASTAT;
          truncate table STATS$INSTANCE_RECOVERY;
          truncate table STATS$JAVA_POOL_ADVICE;
          truncate table STATS$THREAD;
          truncate table STATS$CR_BLOCK_SERVER;
          truncate table STATS$CURRENT_BLOCK_SERVER;
          truncate table STATS$INSTANCE_CACHE_TRANSFER;
          truncate table STATS$FILE_HISTOGRAM;
          truncate table STATS$TEMP_HISTOGRAM;
          truncate table STATS$EVENT_HISTOGRAM;
          truncate table STATS$TIME_MODEL_STATNAME;
          truncate table STATS$SYS_TIME_MODEL;
          truncate table STATS$SESS_TIME_MODEL;
          truncate table STATS$STREAMS_CAPTURE;
          truncate table STATS$STREAMS_APPLY_SUM;
          truncate table STATS$PROPAGATION_SENDER;
          truncate table STATS$PROPAGATION_RECEIVER;
          truncate table STATS$BUFFERED_QUEUES;
          truncate table STATS$BUFFERED_SUBSCRIBERS;
          truncate table STATS$RULE_SET;
          truncate table STATS$OSSTAT;
          truncate table STATS$OSSTATNAME;
          truncate table STATS$PROCESS_ROLLUP;
          truncate table STATS$PROCESS_MEMORY_ROLLUP;
          truncate table STATS$STREAMS_POOL_ADVICE;
          truncate table STATS$SGA_TARGET_ADVICE;
          truncate table STATS$MUTEX_SLEEP;
          truncate table STATS$DYNAMIC_REMASTER_STATS;
          ?
          delete from STATS$SNAPSHOT;
          delete from STATS$DATABASE_INSTANCE;
          ?
          commit;
          ?
          ??? 當存在大量的數據時,使用delete是比較慢的,可以嘗試使用sptrunc.sql腳本




          -The End-

          posted on 2009-01-18 21:13 decode360-3 閱讀(451) 評論(0)  編輯  收藏 所屬分類: Oracle
          主站蜘蛛池模板: 大田县| 竹山县| 泰宁县| 兴和县| 梅河口市| 富川| 济阳县| 蕉岭县| 日土县| 万山特区| 中阳县| 宣化县| 碌曲县| 德格县| 万州区| 醴陵市| 浮梁县| 泽州县| 正蓝旗| 正安县| 长宁县| 会昌县| 天镇县| 中超| 石棉县| 任丘市| 文昌市| 三江| 井冈山市| 思茅市| 灵石县| 普兰店市| 德格县| 曲松县| 和顺县| 宁蒗| 金坛市| 汤阴县| 宁明县| 崇左市| 新津县|