stackpack

  • Get all snapshot

select * from STATS$snapshot;

  • Check database instance

select * from STATS$DATABASE_INSTANCE; -- in case database restarted, an error will be thrown as ORA-20200: The instance was shutdown between snapshots 981 and 982

select * from v$instance;

  • Run stackpack

sqlplus perfstat/password@"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=server)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=xxrac)))"

@$ORACLE_HOME/rdbms/admin/spreport.sql

OR

@?/rdbms/admin/spreport.sql

  • Purge stackpack

@$ORACLE_HOME/rdbms/admin/sppurge.sql

OR

@?/rdbms/admin/sppurge.sql

  • Oracle jobs

select * from user_jobs;
SELECT job, next_date, next_sec, failures, broken, SUBSTR(what,1,40) DESCRIPTION FROM dba_jobs;
EXEC dbms_job.broken(24, false); EXEC dbms_job.run(24, false); -- reset job when failure 16 attemps to run

  • Oracle job for schedule run sppurge

<pre> ---Check the snap present before 20 days---- select count(*) from stats$snapshot where snap_time < sysdate-20 ----Create the procedure which will purge statspack snapshot after 20 days gap--------- create or replace procedure statspackpurge is var_lo_snap number; var_hi_snap number; var_db_id number; var_instance_no number; noofsnapshot number; n_count number ; begin n_count := 0; select count(*) into n_count from stats$snapshot where snap_time < sysdate-20; if n_count > 0 then select min(s.snap_id) , max(s.snap_id),max(di.dbid),max(di.instance_number) into var_lo_snap, var_hi_snap,var_db_id,var_instance_no from stats$snapshot s , stats$database_instance di where s.dbid = di.dbid and s.instance_number = di.instance_number and di.startup_time = s.startup_time and s.snap_time < sysdate-20; noofsnapshot := statspack.purge( i_begin_snap => var_lo_snap , i_end_snap => var_hi_snap , i_snap_range => true , i_extended_purge => false , i_dbid => var_db_id , i_instance_number => var_instance_no); dbms_output.Put_line('snapshot deleted'||to_char(noofsnapshot)); end if; end; / ----check the job already exits in the database------------------------ SELECT job, next_date, next_sec, failures, broken, SUBSTR(what,1,40) DESCRIPTION FROM dba_jobs; ------scheduled the job at mid night---------------------- declare my_job number; begin dbms_job.submit(job => my_job, what => 'statspackpurge;', next_date => trunc(sysdate)+1, interval => 'trunc(sysdate)+1'); end; / -------------- Another way---------------------------------------------------------- variable v_jobno number; begin dbms_job.submit(:v_jobno,'statspack.purge(i_num_days=>15,i_extended_purge=>TRUE);',trunc(sysdate)+1+2/24,'SYSDATE',TRUE); commit; end; / </pre>

  • Reference

Stackpack

http://www.oracle-base.com/articles/8i/statspack-8i.php

http://docs.oracle.com/cd/B10500_01/server.920/a96533/statspac.htm

Oracle job

http://www.orafaq.com/wiki/DBMS_JOB

http://www.dba-oracle.com/tips_oracle_statspack_purge_utility.htm

http://myoracleworld.hobby-electronics.net/DB-statspack.html

http://dbaworks-sunny.blogspot.hk/2012/12/statspack-purge-script-for-scheduling.html

http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_job.htm#i1000769

转载于:https://my.oschina.net/l1z2g9/blog/332814

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值