Oracle sysaux表空间异常增长的完美解决方法

 更新时间:2022年04月20日 16:24:19   作者:徽州吴彦祖  
sysaux表空间会因为多种情况而增大,下面这篇文章主要给大家介绍了关于Oracle sysaux表空间异常增长的完美解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

发现问题

某一业务系统数据库,sysaux表空间大小达到24GB+

查询sysaux表空间中对象的大小,超过1GB的列出,发现ASH相关的表过大。

 SEGMENT_NAME                   OWNER                SEGMENT_TYPE           MB                                                                                                       
------------------------------ -------------------- ------------------ ------                                                                                                       
WRH$_ACTIVE_SESSION_HISTORY    SYS                  TABLE PARTITION      7151                                                                                                       
WRH$_EVENT_HISTOGRAM_PK        SYS                  INDEX PARTITION      1856                                                                                                       
WRH$_EVENT_HISTOGRAM           SYS                  TABLE PARTITION      1777                                                                                                       
WRH$_LATCH                     SYS                  TABLE PARTITION      1657                                                                                                       
WRH$_SQLSTAT                   SYS                  TABLE PARTITION      1344

查看快照在数据库中的保留时长

可以看到,AWR设定的保留时间为8天,WRH$_ACTIVE_SESSION_HISTORY确保留了2140天的数据,需清理。

查看AWR快照未清理原因

WRH$_ACTIVE_SESSION_HISTORY由于分区失败,导致所有数据均在同一个表空间,所以删除过期快照失败。

问题原因分析:

Oracle根据保留策略决定需要清除哪些行。在大型AWR表的情况下使用了一种特殊的机制,我们将快照数据存储在分区中。从这些表中清除数据的一种方法是删除只包含超过保留条件的行的分区。在夜间清除任务中,只有当分区中的所有数据都已过期时,我们才会删除该分区。如果该分区至少包含一行,根据保留策略,该行不应被删除,那么该分区将不会被删除,因此该表将包含旧数据。

如果没有发生分区拆分(无论出于何种原因),那么我们最终可能会遇到这样的情况:我们必须等待最新的条目过期,然后才能删除它们所在的分区。这可能意味着,一些较旧的条目可以在有效期过后显著保留。其结果是数据未按预期清除。

处理方法:

根据MOS:WRH$_ACTIVE_SESSION_HISTORY Does Not Get Purged Based Upon the Retention Policy (Doc ID 387914.1)处理步骤

1.Check the partition details for the offending table before the split:

 SELECT owner,
  segment_name,
  partition_name,
  segment_type,
  bytes/1024/1024/1024 Size_GB
FROM dba_segments
WHERE segment_name='WRH$_ACTIVE_SESSION_HISTORY';

2.Split the partitions so that there is more chance of the smaller partition being purged:

alter session set "_swrf_test_action" = 72;

NOTE: This command will split partitions for ALL partitioned AWR objects. It also initiates a single split; it does not need to be disabled and will need to be repeated if multiple splits are required.

3.Check the partition details for the offending table after the split:

SELECT owner,
  segment_name,
  partition_name,
  segment_type,
  bytes/1024/1024/1024 Size_GB
FROM dba_segments
WHERE segment_name='WRH$_ACTIVE_SESSION_HISTORY';

以上步骤执行完成后,再truncate原来的分区,只保留新分区,释放空间

ALTER TABLE WRH$_ACTIVE_SESSION_HISTORY TRUNCATE PARTITION WRH$_ACTIVE_xxxxx;

检查索引是否正常

select index_name,partition_name,status from dba_ind_partitions where index_name='WRH$_ACTIVE_SESSION_HISTORY_PK';

总结

到此这篇关于Oracle sysaux表空间异常增长解决的文章就介绍到这了,更多相关Oracle sysaux表空间异常增长内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • oracle不支持的字符集orai18n.jar ZHS16GBK异常问题解决办法

    oracle不支持的字符集orai18n.jar ZHS16GBK异常问题解决办法

    字符集是数据库中用来表示和存储字符的编码系统,这篇文章主要给大家介绍了关于oracle不支持的字符集orai18n.jar ZHS16GBK异常问题的解决办法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • Oracle多表级联更新详解

    Oracle多表级联更新详解

    我们在平时的工作中可能遇到过,多表级联更新,我也在网上看到过不少的方法,但是使用这些方法一般都没成功过,所以今天我给大家介绍一种稍微麻烦的方法,有需要的朋友可以参考下
    2013-07-07
  • oracle用户权限管理使用详解

    oracle用户权限管理使用详解

    这篇文章主要介绍了oracle用户权限管理使用方法,需要的朋友可以参考下
    2014-04-04
  • Oracle中pivot函数图文实例详解

    Oracle中pivot函数图文实例详解

    pivot操作是一种数据处理方法,可以将一个表中的行数据转换为列数据,这种转换对于表格数据的分析和展示非常有用,下面这篇文章主要给大家介绍了关于Oracle中pivot函数的相关资料,需要的朋友可以参考下
    2023-05-05
  • Oracle VM VirtualBox Ubuntu设置共享文件夹方式

    Oracle VM VirtualBox Ubuntu设置共享文件夹方式

    这篇文章主要介绍了Oracle VM VirtualBox Ubuntu设置共享文件夹方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • SQL 错误 [1722] [42000]: ORA-01722: 无效数字解决办法

    SQL 错误 [1722] [42000]: ORA-01722: 无效数字解决办法

    这篇文章主要给大家介绍了关于SQL 错误 [1722] [42000]: ORA-01722: 无效数字的解决办法,ORA-01722是一个错误代码,当试图将一个字符串转换为数字,但字符串无法转换为数字时会出现这个错误,需要的朋友可以参考下
    2024-06-06
  • 清除Oracle数据库安装记录并重新安装

    清除Oracle数据库安装记录并重新安装

    这篇文章介绍了清除Oracle数据库安装记录并重新安装的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • group by,having,order by的用法详解

    group by,having,order by的用法详解

    如果一个查询中使用了分组函数,任何不在分组函数中的列或表达式必须要在group by中,下面为大家简要介绍下group by,having,order by的用法
    2013-09-09
  • ORACLE EXP不能导出空表的原因分析及解决方法

    ORACLE EXP不能导出空表的原因分析及解决方法

    这篇文章主要介绍了ORACLE EXP不能导出空表的原因分析及解决方法,大家参考使用吧
    2013-11-11
  • Oracle ASM故障数据恢复解决方案

    Oracle ASM故障数据恢复解决方案

    在本篇文章里小编给大家整理的是关于Oracle ASM故障数据恢复解决方案以及相关知识点,有需要的朋友们参考下。
    2019-11-11

最新评论