« Statspack之三-安装statspack | Blog首页 | Statspack之九-其它重要脚本 »
Statspack之八-删除历史数据
作者:eygle |【版权声明:转载时请务必以超链接形式标明文章原始出处和作者信息及本声明】链接:http://www.eygle.com/archives/2004/06/statspack08.html
删除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
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截断所有表。
By eygle on 2004-06-24 22:15 | Comments (0) | Posted to Statspack