暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Statspack之八-删除历史数据

原创 eygle 2004-06-24
599

删除stats$snapshot数据表中的相应数据,其他表中的数据会相应的级连删除:


 






SQL> select max(snap_id) from stats$snapshot;


 


MAX(SNAP_ID)


------------


166


 


SQL> delete from stats$snapshot where snap_id < = 166;


 


143 rows deleted


 


 


你可以更改snap_id的范围以保留你需要的数据。


在以上删除过程中,你可以看到所有相关的表都被锁定。


 






SQL> select a.object_id,a.oracle_username ,b.object_name
from v$locked_object a,dba_objects b
where a.object_id = b.object_id
/


 


OBJECT_ID ORACLE_USERNAMEOBJECT_NAME


------------------------------------- ---------------------------------------------------------


156 PERFSTATSNAP$


39700 PERFSTATSTATS$LIBRARYCACHE


39706 PERFSTATSTATS$ROLLSTAT


39712 PERFSTATSTATS$SGA


39754 PERFSTATSTATS$PARAMETER


39745 PERFSTATSTATS$SQL_STATISTICS


39739 PERFSTATSTATS$SQL_SUMMARY


39736 PERFSTATSTATS$ENQUEUESTAT


39733 PERFSTATSTATS$WAITSTAT


39730 PERFSTATSTATS$BG_EVENT_SUMMARY


39724 PERFSTATSTATS$SYSTEM_EVENT


39718 PERFSTATSTATS$SYSSTAT


39715 PERFSTATSTATS$SGASTAT


39709 PERFSTATSTATS$ROWCACHE_SUMMARY


39703 PERFSTATSTATS$BUFFER_POOL_STATISTICS


39697 PERFSTATSTATS$LATCH_MISSES_SUMMARY


39679 PERFSTATSTATS$SNAPSHOT


39682 PERFSTATSTATS$FILESTATXS


39688 PERFSTATSTATS$LATCH


174 PERFSTATJOB$


 


20 rows selected


 


Oracle还提供了系统脚本用于Truncate这些统计信息表,这个脚本名字是: sptrunc.sql (8i、9i都相同)


该脚本主要内容如下,里面看到的就是statspack相关的所有系统表:


 






truncate table STATS$FILESTATXS;


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$ENQUEUESTAT;


truncate table STATS$SQL_SUMMARY;


truncate table STATS$SQL_STATISTICS;


truncate table STATS$SQLTEXT;


truncate table STATS$PARAMETER;


 


delete from STATS$SNAPSHOT;


delete from STATS$DATABASE_INSTANCE;


 


commit;


 


如果采样了大量的数据,直接Delete是非常缓慢的,可以考虑使用上述SQL截断所有表。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论