eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

« Statspack之三-安装statspack | Blog首页 | Statspack之九-其它重要脚本 »

Statspack之八-删除历史数据

删除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截断所有表。


历史上的今天...
    >> 2013-06-24文章:
    >> 2011-06-24文章:

无觅

By eygle on 2004-06-24 22:15 | Comments (0) | Special | 23 |


CopyRight © 2004~2020 云和恩墨,成就未来!, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-59007017-7040 or 7037 业务合作: marketing@enmotech.com