自动删除过期的statspack统计数据

我们在做性能分析的时候需要出statspack报表,为了方便,我们一般使用job方式定时生成报表,但是这种方式有一定的潜在危险。如果忘记移除这个job,而statspack所在表空间没有限制大小的话,可能会把大量占用磁盘空间,引起数据库或操作系统崩溃,所以我们需要定期对一些过期的统计信息进行清除。


oracle自带了两个脚本可以做这些清除工作:
$ORACLE_HOME/rdbms/admin/sptrunc.sql --对statspack涉及到的表执行trunc操作
$ORACLE_HOME/rdbms/admin/sppurge.sql --删除执行范围的snap_id的统计信息

实际情况下,我们一般需要保留一段时间的statspack统计信息,所以sptrunc.sql不适合需求。sppurge.sql是根据snap_id进行删除,并且需要人工干预,不能满足自动按时间删除数据的需求。
我们可以对sptrunc.sql稍作改动,使之满足要求。
需要改动的地方不多,列举如下:
1、----------------------------------------
注释 132、134行
这两行的内容是:
prompt Using &&LoSnapId for lower bound.
prompt Using &&HiSnapId for upper bound.

注释后的内容是:
--prompt Using &&LoSnapId for lower bound.
--prompt Using &&HiSnapId for upper bound.

2、------------------------------------------
在variable hi_snap number;这一行后、
begin
:lo_snap := &losnapid;
:hi_snap := &hisnapid;
end;
前添加如下内容(大概在138行左右)
variable delete_days number;
exec :delete_days:=7;
--delete_days表示需要删除多少天前的数据
column losnapid new_value losnapid;
column hisnapid new_value hisnapid;

select min(snap_id) losnapid,max(snap_id) hisnapid from stats$snapshot where snap_time

修改后的内容如下:
variable lo_snap number;
variable hi_snap number;

variable delete_days number;
exec :delete_days:=7;
column losnapid new_value losnapid;
column hisnapid new_value hisnapid;

select nvl(min(snap_id),0) losnapid,nvl(max(snap_id),0) hisnapid from stats$snapshot where snap_time


begin
:lo_snap := &losnapid;
:hi_snap := &hisnapid;
end;

3、---------------------------------------------------------------------------------
在sppurge.sql最后添加
exit

退出sqlplus

修改后,可以用crontab命令定时调用该脚本,实现定时清除。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/231499/viewspace-63742/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/231499/viewspace-63742/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值