`

如何删除statspack生成的历史数据

阅读更多
如何删除statspack生成的历史数据

    当用$ORACLE_HOME/rdbms/admin/spauto.sql创建一个默认的job以后,数据库中会每1个小时收集一次快照,方便我们可以随时用$ORACLE_HOME/rdbms/admin/spreport.sql产生report诊断分析报告,但是采样的数据量是相当惊人的,如果忽略了这个job,或者没有定期的检查剩余空间大小,有的生产环境很可能会由于空间不足到导致其它的不可预测状况,所以我们要定期的删除statspack收集的历史数据,前提条件是要做好备份,然后删除不再需要的历史数据,删除方法有2种:手工删除和自动脚本删除。

1.备份perfstat用户下的对象
[oracle@rac1 ~]$ export NLS_LANG=american_america.ZHS16GBK
[oracle@rac1 ~]$ cd /data
[oracle@rac1 ~]$ expperfstat/oracle@leizfile=./perfstat_backup.dmp wner=perfstat
[oracle@rac1 ~]$ ll -t
-rw-r--r--   1 oracle     dba        1893620736 Apr 27 10:40 perfstat_backup.dmp

2.删除statspack生成的历史数据
  a:手工删除statspack中的历史记录
         1)保留最近1个月的数据
            delete from perfstat.stats$snapshot where snap_time <= add_months(trunc(sysdate),-1)
            --2520条记录
            --1313.869s
    备注:删除2520条记录,需要25分钟,这是因为delete from stats$snapshot会及联删除代snap_id的所有表中相关snap_id的记录,所以需要的时间会很长(但是stats$undostat,stats$sqltext除外:
    删除STATSPACK数据可以使用DELETE STATS$SNAPSHOT的方法,除了STATS$UNDOSTAT之外,其他的包含SNAP_ID的表都会被清除掉。不过PERFSTAT用户下还有一些表不包含SNAP_ID:
   select b.segment_name, sum(b.bytes)/1024/1024
   from user_segments b
   where b.segment_name in (SELECT TABLE_NAME FROM USER_TABLES
   MINUS
   SELECT TABLE_NAME FROM USER_TAB_COLUMNS WHERE COLUMN_NAME = 'SNAP_ID')
   group by b.segment_name
   order by 2
     table_name                                                M
    ------------------------------------------------      ------
     STATS$IDLE_EVENT                              0.125
     STATS$LEVEL_DESCRIPTION            0.125
     STATS$STATSPACK_PARAMETER     0.125
     STATS$SEG_STAT_OBJ                        1
     STATS$SQLTEXT                                     176

         2)清空非关联删除表(stats$undostat,stats$sqltext)
            TRUNCATE TABLE PERFSTAT.stats$undostat
            --19440条记录
           TRUNCATE TABLE PERFSTAT.stats$sqltext
           --8060778条记录
           备注:由于PERFSTAT.stats$sqltext中的记录数量很大,所以一般选择truncate,当然也可以delete一个月前的数据,但是速度会相当的慢。
       delete from stats$undostat where begin_time <= add_months(trunc(sysdate),-1)
       delete from stats$sqltext bb  where hash_value in (select a.hash_value from stats$sqltext  a,stats$sql_summary b where a.hash_value = b.hash_value(+) and b.hash_value is null )
      
  b:oracle提供自动脚本删除statspack中的历史记录
      除了手工删除历史记录以外,oracle还提供了系统脚本用户truncate这些统计信息表,
      $ORACLE_HOME//rdbms/admin/sptrunc.sql
       truncate table STATS$FILESTATXS;
       truncate table STATS$TEMPSTATXS;
       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$ENQUEUE_STATISTICS;
       truncate table STATS$SQL_SUMMARY;
       truncate table STATS$SQL_STATISTICS;
       truncate table STATS$SQLTEXT;
       truncate table STATS$PARAMETER;
       truncate table STATS$RESOURCE_LIMIT;
       truncate table STATS$DLM_MISC;
       truncate table STATS$UNDOSTAT;
       truncate table STATS$SQL_PLAN;
       truncate table STATS$SQL_PLAN_USAGE;
       truncate table STATS$SEG_STAT;
       truncate table STATS$SEG_STAT_OBJ;
       truncate table STATS$DB_CACHE_ADVICE;
       truncate table STATS$PGASTAT;
       truncate table STATS$INSTANCE_RECOVERY;
       truncate table STATS$JAVA_POOL_ADVICE;
       truncate table STATS$THREAD;
       truncate table STATS$CR_BLOCK_SERVER;
       truncate table STATS$CURRENT_BLOCK_SERVER;
       truncate table STATS$INSTANCE_CACHE_TRANSFER;
       truncate table STATS$FILE_HISTOGRAM;
       truncate table STATS$TEMP_HISTOGRAM;
       truncate table STATS$EVENT_HISTOGRAM;
       truncate table STATS$TIME_MODEL_STATNAME;
       truncate table STATS$SYS_TIME_MODEL;
       truncate table STATS$SESS_TIME_MODEL;
       truncate table STATS$STREAMS_CAPTURE;
       truncate table STATS$STREAMS_APPLY_SUM;
       truncate table STATS$PROPAGATION_SENDER;
       truncate table STATS$PROPAGATION_RECEIVER;
       truncate table STATS$BUFFERED_QUEUES;
       truncate table STATS$BUFFERED_SUBSCRIBERS;
       truncate table STATS$RULE_SET;
       truncate table STATS$OSSTAT;
       truncate table STATS$OSSTATNAME;
       truncate table STATS$PROCESS_ROLLUP;
       truncate table STATS$PROCESS_MEMORY_ROLLUP;
       truncate table STATS$STREAMS_POOL_ADVICE;
       truncate table STATS$SGA_TARGET_ADVICE;
       truncate table STATS$MUTEX_SLEEP;
       truncate table STATS$DYNAMIC_REMASTER_STATS;
     
       delete from STATS$SNAPSHOT;
       delete from STATS$DATABASE_INSTANCE;
     
       commit;
此时,与statspack相关的大部分系统表都会被清空,如果采样了大量的数据,直接delete是非常缓慢的,所以可以考虑使用oracle提供的默认脚本清空perfstat中的历史记录。
转于:
http://space.itpub.net/9252210/viewspace-592063

分享到:
评论

相关推荐

    ORACLE STATSPACK

    - **历史数据分析**:Statspack支持对历史性能数据进行分析,这对于长期跟踪数据库性能趋势非常有用。 - **易用性**:尽管Statspack功能强大,但其使用相对简单,可以通过简单的SQL命令来启动数据收集和生成报告。 ...

    oracle statspack安装配置

    - **历史比较**:Statspack支持对比不同时间点的性能数据,帮助你识别性能变化的趋势,找出可能的问题源头。 - **性能瓶颈识别**:Statspack能揭示CPU、I/O、内存等方面的瓶颈,有助于调整数据库配置和硬件资源。 ...

    Oracle9i STATSPACK 高性能调整

    3. **历史对比**:STATSPACK可以记录多个时间点的统计信息,通过对比不同时间段的数据,我们可以发现性能变化的趋势,找出可能的问题源头。 4. **性能监控**:通过监视CPU使用率、I/O等待事件、内存利用率等关键...

    Statspack安装使用介绍

    3. **远程技术支持**:Statspack生成的报告能够让远程的技术支持人员迅速了解数据库的运行状况,加快问题解决速度。 4. **趋势分析**:通过连续采样,Statspack提供了重要的趋势分析数据,帮助用户更好地理解数据库...

    oracle中的高级运用statspack

    通过对历史性能数据的分析,可以预测未来的资源需求,避免因资源不足而导致的服务中断。此外,Statspack的报告功能可以帮助团队理解和分享性能状况,促进跨部门协作,共同提升系统性能。 总的来说,"Statspack工具...

    细化解析oracle 10g statspack

    随着Oracle数据库技术的不断进步和发展,Statspack作为一款历史悠久的性能监控工具,在Oracle 10g中仍然扮演着重要的角色。尽管Oracle 10g引入了诸如自动工作负荷存储库(AWR)和自动数据库诊断监视(ADDM)等更为...

    oracle+statspack+高性能调整技术

    首先,Oracle Statspack是一种历史性能数据收集工具,它可以记录数据库在运行时的详细信息,包括SQL语句执行情况、等待事件、系统资源使用等。这些数据对于识别性能瓶颈、优化查询和提升整体系统效率至关重要。...

    oracle statspack 安装使用分析

    4. **清理历史数据**:定期执行`DBMS_STATS.PURGE_STATSPACK`以删除不再需要的旧数据,保持数据库整洁。 最后,我们要讨论的是**StatsPack的性能分析**。`statspack(3) 分析.doc`会指导你如何利用收集到的数据进行...

    Oracle STATSPACK 高性能调整技术

    2. **报告生成**:利用STATSPACK生成的报告可以帮助识别性能瓶颈,例如Top SQL、会话统计、I/O统计等。这些报告可以对比不同时间点的数据,以发现性能变化趋势。 3. **性能分析**:通过比较两次统计快照之间的差异...

    oracle性能诊断工具statspack使用指南

    此外,Statspack 还提供历史数据对比,帮助监控性能趋势。 六、清理与维护 随着数据的积累,Statspack 表可能会占用大量空间。因此,定期清理不再需要的旧数据至关重要。可以使用`DBMS_STATS.PURGE_TABLE`或`DBMS_...

    oracle+statspack+高性能调整技术 书中代码

    定期清理可以避免存储空间被过多的历史数据占用,同时保持Statspack报告的时效性。 2. trace_alert.ksh:此脚本可能用于处理警报日志中的跟踪信息。跟踪文件包含了数据库运行时的详细信息,对于定位问题非常有帮助...

    STATSPACK安装指导书.doc

    STATSPACK的安装和使用是数据库性能管理和故障排查的重要步骤,它能够提供详细的性能历史数据,帮助DBA识别性能瓶颈并做出相应的优化决策。通过定期生成的报告,可以对数据库性能趋势进行深入分析。

    statspack使用指南-v2[1].1.pdf

    这两个脚本分别捕获V$视图的快照并在之后生成报告,其实质上与Statspack中的两次采样点类似。然而,Statspack通过持续的采样提供了更为详尽的趋势分析数据,这一改进对于理解数据库性能变化至关重要。鉴于其优势,当...

    ODD_SQL and Beyond.ppt

    SQL,全称Structured Query Language,是用于管理关系数据库的标准语言,包括数据查询、数据更新、数据插入和数据删除等操作。在"ODD_SQL and Beyond.ppt"这份资料中,重点探讨了SQL优化以及与Oracle数据库相关的...

    oracle数据库级别优化分析工具介绍[整理].pdf

    其次,Automatic Workload Repository (AWR)是Oracle数据库自9i版本起内置的性能监控组件,它自动收集数据库性能数据,并在后台维护一个固定时间窗口内的历史数据。AWR的收集周期默认为1小时,数据存储在数据库中,...

    oracle 相关书籍

    3. **性能报告生成**:学习如何生成不同类型的Statspack报告,如Top SQL、SQL Tuning Advisor报告、会话统计报告等,这些报告是识别性能问题的关键。 4. **性能分析**:解析Statspack报告中的关键指标,如执行时间...

    awr相关知识学习

    此外,理解ASH的工作机制和内存管理也对优化AWR的使用有所帮助,例如,适时调整SGA的ASH缓冲区大小,以确保足够存储重要的会话历史数据。 总的来说,AWR是Oracle数据库性能管理的关键组件,它结合了ASH的实时性和...

    AWR手册_v1.0.pdf

    这使得数据库管理员可以使用这些历史数据来分析和解决数据库性能问题。AWR的数据被存储在一组称为Active Session History(ASH)的基础表中,其中的核心视图是v$active_session_history。这个视图提供了一种方式来...

Global site tag (gtag.js) - Google Analytics