Maclean Liu(刘相兵 发表于 2013-10-22 23:09:03

WRH$_SQL_PLAN WRH$_SQLTEXT过大占用SYSAUX表空间

WRH$_SQL_PLAN WRH$_SQLTEXT过大占用SYSAUX表空间

数据库中由于AWR快照保留时间略长(31天)且应用所运行的SQL文本较长,导致AWR自动负载仓库的几张基表较大,占用了SYSAUX表空间的大量空间,同时也拖慢了AWR报告的查询。 通过分析发现是AWR的SQLPLAN、ASH和SQLTEXT 三个组件占用了大部分的空间,其中最大的2个数据段是WRH$_SQL_PLAN和WRH$_SQLTEXT的LOB SYS_LOB0000008984C00004$$。

由于WRH$_SQL_PLAN和WRH$_SQLTEXT不是系统关键的数据字典对象,故在没有保留性能快照数据历史的前提下可以对这2张表执行TRUNCATE清理操作,但是由于这2张表可能被AWR用户使用,所以要确保TRUNCATE之前没有锁存在。

步骤1:检查WRH$_SQL_PLAN和WRH$_SQLTEXT的大小:
select bytes / 1024 / 1024, segment_name
  from dba_segments
where segment_name in
       ('WRH$_SQLTEXT', 'SYS_LOB0000008984C00004$$', 'WRH$_SQL_PLAN');

步骤2:若觉得有清理以上2张表数据的必要,则先检查是否有锁:
select *
  from v$lock
where type = 'TM'
   and id1 in
       (select object_id
          from dba_objects
         where object_name in ('WRH$_SQL_PLAN', 'WRH$_SQLTEXT'));


步骤3:实际TRUNCATE截断表:
Set timing on;
truncate table sys.WRH$_SQLTEXT reuse storage;
truncate table sys.WRH$_SQL_PLAN reuse storage;      
truncate table sys.WRH$_SQLTEXT ;
truncate table sys.WRH$_SQL_PLAN ;

步骤4: 检查WRH$_SQL_PLAN和WRH$_SQLTEXT的大小变化,执行步骤1的操作。

liuwenqing 发表于 2014-3-13 17:48:15

用自带的dbms包不是更安全!~

Maclean Liu(刘相兵 发表于 2014-3-13 20:17:36

liuwenqing 发表于 2014-3-13 17:48 static/image/common/back.gif
用自带的dbms包不是更安全!~

印象中 一开始用了标准方法,但耗时太久 根本出不来
页: [1]
查看完整版本: WRH$_SQL_PLAN WRH$_SQLTEXT过大占用SYSAUX表空间