排查并解决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 相关文章推荐
zabbix agent2 监控oracle数据库的方法
May 13 Oracle
快速学习Oracle触发器和游标
Jun 30 Oracle
RPM包方式安装Oracle21c的方法详解
Aug 23 Oracle
C#连接ORACLE出现乱码问题的解决方法
Oct 05 Oracle
详解Oracle块修改跟踪功能
Nov 07 Oracle
详解Oracle数据库中自带的所有表结构(sql代码)
Nov 20 Oracle
Oracle中update和select 关联操作
Jan 18 Oracle
Oracle 触发器trigger使用案例
Feb 24 Oracle
详细聊聊Oracle表碎片对性能有多大的影响
Mar 19 Oracle
Oracle 多表查询基本语法实例
Apr 18 Oracle
分析SQL窗口函数之排名窗口函数
Apr 21 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
PHP 验证码的实现代码
2011/07/17 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
jquery实现的超出屏幕时把固定层变为定位层的代码
2010/02/23 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
2013/12/14 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
200行自定义python异步非阻塞Web框架
2017/03/15 Python
回调函数的意义以及python实现实例
2017/06/20 Python
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
python源文件的字符编码知识点详解
2021/03/04 Python
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
2015年税务稽查工作总结
2015/05/26 职场文书
MySQL修炼之联结与集合浅析
2021/10/05 MySQL