zoukankan      html  css  js  c++  java
  • Oracle AWR 删除历史快照 说明


    一. AWR 概述

    之前整理过一篇AWR 的说明的文档:

    Oracle AWR(Automatic Workload Repository) 说明

    http://blog.csdn.net/tianlesoftware/article/details/4682300

       从Oracle 10g 开始,Oracle 推出一个工具:AWR(Automatic Workload Repository),并建议用AWR 代替9i 的Statspack。

    AWR 实质上是一个 Oracle 的内置工具,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题。

    AWR的快照由一个MMON的后台进程及其从进程自动地每小时采集一次。为了节省空间,在Oracle 10g中快照会保留7天,11g的快照保留8天,超过的会自动删除,快照频率和保留时间都可以由用户修改。

    AWR 使用几个表来存储采集的统计数据,所有的表都存储在新的名称为 SYSAUX 的特定表空间中的SYS模式下,并且以 WRM$_* 和 WRH$_* 的格式命名:

    (1)WRM$_*类表存储元数据信息(如检查的数据库和采集的快照)

    (2)WRH$_*类保存实际采集的统计数据。

    H 代表“历史数据 (historical)”而 M 代表“元数据 (metadata)”。

    在这些表上构建了几种带前缀 DBA_HIST_ 的视图,这些视图可以用来编写您自己的性能诊断工具。视图的名称直接与表相关;例如,视图 DBA_HIST_SYSMETRIC_SUMMARY 是在WRH$_SYSMETRIC_SUMMARY 表上构建的。

    二. AWR 快照的删除

    2.1 为什么要删除AWR 快照?

    默认情况下,对于数据库自身产生的AWR 报告,会保留7天或8天。

    SQL> select dbid, retention fromdba_hist_wr_control;

         DBID RETENTION

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

     879543530 +00008 00:00:00.0

    这个是我11g的库,显示为8天,如果是Oracle 10g,则会保留7天。

    AWR 快照也可以从其他的数据库中导入,我们这里看一下:

    SQL> select dbid, retention fromdba_hist_wr_control;

         DBID RETENTION

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

     877621333 +40150 00:00:00.0

     879543530 +00008 00:00:00.0

    如果是从其他库导入的快照,在10g以后会保存110年(40150/365),这部分数据不会永久删除。

    --AWR出脚本:

    SQL> @?/rdbms/admin/awrextr.sql

     

    --AWR导入脚本:

    SQL> @?/rdbms/admin/awrload.sql

    另一个很重要的原因,就是有时候自动快照不能自动收集,而手工创建快照又可以成功,对于这种问题的解决方法就是把之前的快照清空掉。

     

    2.2 删除AWR 快照数据

    2.2.1 使用dbms_workload_repository 包来删除

    2.2.1.1 删除本机的AWR 快照

    SQL> select dbid, retention fromdba_hist_wr_control;

         DBID RETENTION

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

     879543530 +00008 00:00:00.0

    SQL> selectmin(snap_id), max(snap_id) from dba_hist_snapshot where dbid = 879543530;

    MIN(SNAP_ID)MAX(SNAP_ID)

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

             161          176

     

    SQL> execdbms_workload_repository.drop_snapshot_range(161, 176, 879543530)

    PL/SQL proceduresuccessfully completed.

     

    SQL> select *from dba_hist_snapshot where dbid = 879543530;

    no rows selected

     

    2.2.1.2 删除其他实例的快照

    SQL> select dbid, retention fromdba_hist_wr_control;

         DBID RETENTION

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

     877621333 +40150 00:00:00.0

     879543530 +00008 00:00:00.0

    SQL> select min(snap_id), max(snap_id)from dba_hist_snapshot where dbid = 877621333;

    MIN(SNAP_ID) MAX(SNAP_ID)

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

            160          192

    SQL> execdbms_workload_repository.drop_snapshot_range(160, 170, 877621333)

    PL/SQL procedure successfully completed.

    SQL> select min(snap_id), max(snap_id) from dba_hist_snapshot where dbid =877621333;

    MIN(SNAP_ID) MAX(SNAP_ID)

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

            171          192

    SQL>

    删除成功。

    2.2.2 使用dbms_swrf_internal包来删除

    2.2.2.1 删除其他数据库导入的AWR

    SQL> select dbid, retention fromdba_hist_wr_control;

         DBID RETENTION

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

     877621333 +40150 00:00:00.0

     879543530 +00008 00:00:00.0

    SQL> select min(snap_id), max(snap_id)from dba_hist_snapshot where dbid = 877621333;

    MIN(SNAP_ID) MAX(SNAP_ID)

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

            160          192

    SQL> exec dbms_swrf_internal.unregister_database(877621333)

    PL/SQL procedure successfully completed.

    SQL> select min(snap_id), max(snap_id)from dba_hist_snapshot where dbid = 877621333;

    MIN(SNAP_ID) MAX(SNAP_ID)

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

    SQL> select dbid, retention fromdba_hist_wr_control;

         DBID RETENTION

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

     879543530 +00008 00:00:00.0

    SQL>

    dbms_swrf_internal.unregister_database 会把所有的快照直接干掉,与我们上节中的删除是不同的效果。

    2.2.2.2 删除本机的AWR

    我们之前把快照清空了,所以没有结果:

    SQL> select * from dba_hist_snapshotwhere dbid = 879543530;

    no rows selected

    SQL> executedbms_workload_repository.create_snapshot();

    PL/SQL procedure successfully completed.

    SQL> executedbms_workload_repository.create_snapshot();

    PL/SQL procedure successfully completed.

    SQL> executedbms_workload_repository.create_snapshot();

    PL/SQL procedure successfully completed.

    SQL> executedbms_workload_repository.create_snapshot();

    PL/SQL procedure successfully completed.

    --现在又有快照了:

    SQL> select min(snap_id), max(snap_id)from dba_hist_snapshot where dbid = 879543530;

    MIN(SNAP_ID) MAX(SNAP_ID)

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

            177          180

    --删除快照:

    SQL> exec dbms_swrf_internal.unregister_database(879543530)

    BEGINdbms_swrf_internal.unregister_database(879543530); END;

    *

    ERROR at line 1:

    ORA-13521: Unregister operation on localDatabase id (879543530) not allowed

    ORA-06512: at"SYS.DBMS_SWRF_INTERNAL", line 99

    ORA-06512: at line 1

    这里直接提示,dbms_swrf_internal.unregister_database不能对本地的数据库使用。所以如果本地的数据库,就只能使用dbms_workload_repository包了。

    2.2.3 小结

    dbms_workload_repository

        可以删除本地和其他数据库的快照,可以选择不同的快照来进行删除。

    dbms_swrf_internal

        只能对其他数据库的快照来进行操作,会把整个快照unregister掉。

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

    版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

    QQ:      251097186

    Skype:    tianlesoftware

    Email:    tianlesoftware@gmail.com

    Blog:     http://blog.csdn.net/tianlesoftware

    Weibo:    http://weibo.com/tianlesoftware

    Twitter:  http://twitter.com/tianlesoftware

    Facebook: http://www.facebook.com/tianlesoftware

    Linkedin: http://cn.linkedin.com/in/tianlesoftware

  • 相关阅读:
    在ensp上配置Trunk接口
    在ensp上VLAN基础配置以及Access接口
    在ensp上的ARP及Proxy ARP
    在ensp上简单的配置交换机
    1000000 / 60S 的 RocketMQ 不停机,扩容,平滑升级!
    DE1-SOC 只要加载驱动VNC就断开(DE1-SOC 只要加载驱动串口就卡住)
    通过U盘拷贝文件到DE1-SOC 的 Linux系统
    Linux 系统响应来自 FPGA 端的中断的中断号到底怎么对应?(GIC控制器)
    HPS 访问 FPGA 方法之五—— 通过FPGA 中断访问
    HPS 访问 FPGA 方法之四—— 编写 Linux 字符设备驱动
  • 原文地址:https://www.cnblogs.com/tianlesoftware/p/3609049.html
Copyright © 2011-2022 走看看