排查并解决Oracle sysaux表空间异常增长


Posted in Oracle onApril 20, 2022

发现问题

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

排查并解决Oracle sysaux表空间异常增长

查询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

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

排查并解决Oracle sysaux表空间异常增长

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

查看AWR快照未清理原因

排查并解决Oracle sysaux表空间异常增长

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 相关文章推荐
ORACLE数据库对long类型字段进行模糊匹配的解决思路
Apr 07 Oracle
使用springboot暴露oracle数据接口的问题
May 07 Oracle
Oracle 区块链表创建过程详解
May 15 Oracle
Oracle更换为MySQL遇到的问题及解决
May 21 Oracle
Oracle以逗号分隔的字符串拆分为多行数据实例详解
Jul 16 Oracle
RPM包方式安装Oracle21c的方法详解
Aug 23 Oracle
C#连接ORACLE出现乱码问题的解决方法
Oct 05 Oracle
详解Oracle数据库中自带的所有表结构(sql代码)
Nov 20 Oracle
使用Oracle命令进行数据库备份与还原
Dec 06 Oracle
详细聊聊Oracle表碎片对性能有多大的影响
Mar 19 Oracle
分析SQL窗口函数之取值窗口函数
Apr 21 Oracle
oracle设置密码复杂度及设置超时退出的功能
Jun 28 Oracle
Oracle使用别名的好处
Oracle 多表查询基本语法实例
Apr 18 #Oracle
Lakehouse数据湖并发控制陷阱分析
Oracle数据库中通用的函数实例详解
详细聊聊Oracle表碎片对性能有多大的影响
Mar 19 #Oracle
oracle删除超过N天数据脚本的方法
Feb 28 #Oracle
oracle重置序列从0开始递增1
Feb 28 #Oracle
You might like
CI框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
JavaScript Archive Network 集合
2007/05/12 Javascript
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
2013/02/26 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
跟我学习javascript的var预解析与函数声明提升
2015/11/16 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
Python中的filter()函数的用法
2015/04/27 Python
在Django框架中编写Contact表单的教程
2015/07/17 Python
Python Socket传输文件示例
2017/01/16 Python
使用Scrapy爬取动态数据
2018/10/21 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
Django通过json格式收集主机信息
2020/05/29 Python
如何利用python发送邮件
2020/09/26 Python
Python之字典添加元素的几种方法
2020/09/30 Python
活动总结书
2014/05/08 职场文书
2014年党课学习心得体会
2014/07/08 职场文书
常住证明范本
2015/06/23 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python