Decode360's Blog

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks
          <2009年1月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          公告

          常用鏈接

          隨筆分類(299)

          隨筆檔案(299)

          文章分類(26)

          新聞分類(24)

          收藏夾(5)

          Blog列表

          IT網站

          My Link

          最新隨筆

          最新評論

          一、設定自動執行
          ?
          ??? 修改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 閱讀(450) 評論(0)  編輯  收藏 所屬分類: Oracle
          主站蜘蛛池模板: 栾川县| 仲巴县| 两当县| 汽车| 阿勒泰市| 天全县| 清苑县| 封丘县| 礼泉县| 平泉县| 辉县市| 南充市| 略阳县| 博湖县| 巴林左旗| 上杭县| 咸丰县| 会同县| 都兰县| 阜城县| 江源县| 财经| 麟游县| 天全县| 枣庄市| 瓦房店市| 门源| 南溪县| 松江区| 拜城县| 郸城县| 长岭县| 大竹县| 乐安县| 宜兰市| 沂水县| 玉溪市| 正蓝旗| 潢川县| 昭觉县| 高台县|