设为首页 收藏本站
查看: 446|回复: 0

[经验分享] Install STATSPACK in a 11G Database:

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-16 09:04:13 | 显示全部楼层 |阅读模式
Install statspack: @spcreate.sql
Auto-execute statspack jobs: @spauto.sql
Run statspack report: @spreport.sql

to remove a statspack job:                      exec dbms_job.remove('<job number>');
to stop a job from running again:              exec dbms_job.broken('<job number>',TRUE);
to run a job immediately:                          exec dbms_job.run('<job number>')

To show all info for jobs in the active job queue:
set linesize 130;
col what for a30;
col log_user for a12;
col interval for a30;
select job,what,log_user,
to_char(sysdate,'dd-mon-yyyy hh24:mi:ss') "Sysdate",
to_char(next_date,'dd-mon-yyyy hh24:mi:ss') "Next Date",
interval
from user_jobs;
071224341603882.jpg
To change the default 60 minute intervals, change the below string in the spauto.sql script to meet any of the requirements below:
###########################
spool spauto.lis
--
--  Schedule a snapshot to be run on this instance every hour, on the hour
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;
/
############################
Run Statspack Snapshot Every 5 Minutes Starting at the Next 5 Minute Interval
variable jobno number;
variable instno number;
BEGIN
  SELECT instance_number INTO :instno FROM v$instance;
  DBMS_JOB.SUBMIT(:jobno, 'statspack.snap;', trunc(sysdate,'HH24')+((floor(to_number(to_char(sysdate,'MI'))/5)+1)*5)/(24*60), 'trunc(sysdate,''HH24'')+((floor(to_number(to_char(sysdate,''MI''))/5)+1)*5)/(24*60)', TRUE, :instno);
  COMMIT;
END;
/
Run Statspack Snapshot Every 15 Minutes Starting at the Next 15 Minute Interval
variable jobno number;
variable instno number;
BEGIN
  SELECT instance_number INTO :instno FROM v$instance;
  DBMS_JOB.SUBMIT(:jobno, 'statspack.snap;', trunc(sysdate,'HH24')+((floor(to_number(to_char(sysdate,'MI'))/15)+1)*15)/(24*60), 'trunc(sysdate,''HH24'')+((floor(to_number(to_char(sysdate,''MI''))/15)+1)*15)/(24*60)', TRUE, :instno);
  COMMIT;
END;
/
Run Statspack Snapshot Every 30 Minutes Starting at the Next 30 Minute Interval
variable jobno number;
variable instno number;
BEGIN
  SELECT instance_number INTO :instno FROM v$instance;
  DBMS_JOB.SUBMIT(:jobno, 'statspack.snap;', trunc(sysdate,'HH24')+((floor(to_number(to_char(sysdate,'MI'))/30)+1)*30)/(24*60), 'trunc(sysdate,''HH24'')+((floor(to_number(to_char(sysdate,''MI''))/30)+1)*30)/(24*60)', TRUE, :instno);
  COMMIT;
END;
/
Run Statspack Snapshot Every 1 Hour
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;
/
Action
Interval Time
Execute daily
'SYSDATE + 1'
Execute every 4 hours
'SYSDATE + 4/24'
Execute every 10 minutes
'SYSDATE + 10/1440'
Execute every 30 seconds
'SYSDATE + 30/86400'
Execute every 7 days
'SYSDATE + 7'
Do no re-execute and remove job
NULL

Action
Interval Time
Every day at 12:00 midnight
TRUNC(SYSDATE + 1)
Every day at 8:00 p.m.
TRUNC(SYSDATE + 1) + 20/24
Every Tuesday at 12:00 noon
NEXT_DAY(TRUNC(SYSDATE), "TUESDAY") + 12/24
First day of the month at midnight
TRUNC(LAST_DAY(SYSDATE) + 1)
Last day of the quarter at 11:00 p.m.
TRUNC(ADD_MONTH(SYSDATE + 2/24,3),'Q') - 1/24
Every Monday, Wednesday and Friday at 9:00 p.m.
TRUNC(LEAST(NEXT_DAY(SYSDATE, "MONDAY"), NEXT_DAY(SYSDATE, "WEDNESDAY"), NEXT_DAY(SYSDATE, "FRIDAY"))) + 21/24
Oracle Date Math Examples
Date / Time Fraction
Description
WHERE (date) > sysdate - 6/24;
Past 6 hours. (or 1/4 of a day ago)
WHERE (date) > sysdate - 6;
Past six days
WHERE (date) > sysdate - 6/1440;
Past six minutes
6/24
1/4

6 hours
1/24/60/60
5/24/60/60

One second
Five seconds
1/24/60
5/24/60

One minute
Five minutes
1/24
5/24

One hour
Five hours
TRUNC(SYSDATE+1/24,'HH')
Every one hour starting with the next hour

Job interval Examples
Remember that the dbms_job.submit() procedure accepts three parameters:
  • the name of the job to submit
  • the start time for the job
  • and the interval to execute the job
DBMS_JOB.SUBMIT (
    job       => :jobno
  , what      => 'statspack.snap;'             -- What to run
  , next_date => TRUNC(sysdate+1/24,'HH')      -- Start next hour
  , interval  => 'TRUNC(SYSDATE+1/24,''HH'')'  -- Run every hour
);         
--  =========================================================
--  Schedule a SNAPSHOT to be run on this instance every hour
--  =========================================================
VARIABLE  jobno   NUMBER;
VARIABLE  instno  NUMBER;
BEGIN
    select instance_number into :instno from v$instance;
    -- ------------------------------------------------------------
    -- Submit job to begin at 0600 and run every hour.
    -- ------------------------------------------------------------
    DBMS_JOB.SUBMIT (
        :jobno
      , 'statspack.snap;'
      , TRUNC(sysdate+1)+6/24
      , 'TRUNC(SYSDATE+1/24,''HH'')'
      , TRUE
      , :instno);
    -- ------------------------------------------------------------
    -- Submit job to begin at 0900 and run 12 hours later
    -- ------------------------------------------------------------
    DBMS_JOB.SUBMIT (
        :jobno
      , 'statspack.snap;'
      , TRUNC(sysdate+1)+9/24
      , 'TRUNC(SYSDATE+12/24,''HH'')'
      , TRUE
      , :instno);
    -- ------------------------------------------------------------
    -- Submit job to begin at 0600 and run every 10 minutes
    -- ------------------------------------------------------------
    DBMS_JOB.SUBMIT (
        :jobno
      , 'statspack.snap;'
      , TRUNC(sysdate+1)+6/24
      , 'TRUNC(sysdate+10/1440,''MI'')'
      , TRUE
      , :instno);
    -- ----------------------------------------------------------------
    -- Submit job to begin at 0600 and run every hour, Monday - Friday
    -- ----------------------------------------------------------------
    DBMS_JOB.SUBMIT (
        :jobno
      , 'statspack.snap;'
      , TRUNC(sysdate+1)+6/24
      , 'TRUNC(
             LEAST(
                 NEXT_DAY(sysdate,''MONDAY'')
               , NEXT_DAY(sysdate,''TUESDAY'')
               , NEXT_DAY(sysdate,''WEDNESDAY'')
               , NEXT_DAY(sysdate,''THURSDAY'')
               , NEXT_DAY(sysdate,''FRIDAY'')
             ) + 1/24
        , ''HH'')'
      , TRUE
      , :instno);
    COMMIT;
END;
/
Add a job to auto purge snapshots aged more than 31 days.

variable jobno number;
variable instno number;
begin
  select instance_number into :instno from v$instance;
  dbms_job.submit(:jobno, 'statspack.PURGE( i_num_days=>31);', trunc(sysdate+1,'DD'), 'trunc(SYSDATE+1,''DD'')', TRUE, :instno);
  commit;
end;
/

BEGIN
    DBMS_SCHEDULER.CREATE_SCHEDULE(
     schedule_name => 'perfstat.statspack_every20',
     repeat_interval => 'FREQ=MINUTELY;BYMINUTE=10,30,50');

    DBMS_SCHEDULER.CREATE_JOB(
     job_name => 'perfstat.sp_snapshot',
     job_type => 'STORED_PROCEDURE',
     job_action => 'perfstat.statspack.snap',
     schedule_name => 'perfstat.statspack_every20',
     comments => 'Statspack collection');
     DBMS_SCHEDULER.ENABLE('perfstat.sp_snapshot');
END;
/

百度云附件:StatsPack.7z   
contain below script file.
spdrop.sql
@@spdtab.sql
@@spdusr

spcreate.sql
@@spcusr
@@spctab
@@spcpkg

sppurge.sql
spauto.sql
spdoc.txt


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-22128-1-1.html 上篇帖子: Oracle 如何对时间进行简单加减运算 下篇帖子: ORA-01146: cannot start online backup - file 1 is already in backup ORA-01110: d
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表