排查并解决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
Oracle 数据仓库ETL技术之多表插入语句的示例详解
Apr 12 Oracle
oracle通过存储过程上传list保存功能
May 12 Oracle
Oracle11g R2 安装教程完整版
Jun 04 Oracle
ORACLE数据库应用开发的三十个注意事项
Jun 07 Oracle
oracle删除超过N天数据脚本的方法
Feb 28 Oracle
Oracle使用别名的好处
Apr 19 Oracle
Oracle用户管理及赋权
Apr 24 Oracle
Oracle中DBLink的详细介绍
Apr 29 Oracle
在Oracle表中进行关键词搜索的过程
Jun 10 Oracle
Oracle数据库事务的开启与结束详解
Jun 25 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
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
jquery之empty()与remove()区别说明
2010/09/10 Javascript
jQuery点击后一组图片左右滑动的实现代码
2012/08/16 Javascript
原生JavaScript实现连连看游戏(附源码)
2013/11/05 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
JavaScript中的编码和解码函数
2017/02/15 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
利用node.js实现反向代理的方法详解
2017/07/24 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
Django中login_required装饰器的深入介绍
2017/11/24 Python
python+django加载静态网页模板解析
2017/12/12 Python
pandas string转dataframe的方法
2018/04/11 Python
点球小游戏python脚本
2018/05/22 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
Python中zip()函数的简单用法举例
2019/09/02 Python
Pycharm学生免费专业版安装教程的方法步骤
2020/09/24 Python
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
毕业论文致谢信
2015/05/14 职场文书
2015年共青团工作总结
2015/05/15 职场文书
2016年第104个国际护士节活动总结
2016/04/06 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书
如何利用pygame实现打飞机小游戏
2021/05/30 Python
python编程项目中线上问题排查与解决
2021/11/01 Python
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL