排查并解决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表分区的概念及操作
Apr 24 Oracle
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
Jun 04 Oracle
oracle索引总结
Sep 25 Oracle
Oracle 触发器trigger使用案例
Feb 24 Oracle
oracle重置序列从0开始递增1
Feb 28 Oracle
详细聊聊Oracle表碎片对性能有多大的影响
Mar 19 Oracle
Oracle数据库中通用的函数实例详解
Mar 25 Oracle
SQL试题 使用窗口函数选出连续3天登录的用户
Apr 24 Oracle
ORACLE中dbms_output.put_line输出问题的解决过程
Jun 28 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
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
php类声明和php类使用方法示例分享
2014/03/29 PHP
php使用curl和正则表达式抓取网页数据示例
2014/04/13 PHP
PHP实现微信图片上传到服务器的方法示例
2017/06/29 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
2018/05/23 PHP
javascript 精粹笔记
2010/05/09 Javascript
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
[05:04]DOTA2上海特级锦标赛主赛事第二日TOP10
2016/03/04 DOTA
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
python ip正则式
2009/05/07 Python
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
深入浅析Python 函数注解与匿名函数
2020/02/24 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
优秀员工年终发言演讲稿
2014/01/01 职场文书
初中三好学生事迹材料
2014/01/13 职场文书
回门宴答谢词
2014/01/13 职场文书
《夜晚的实验》教学反思
2014/02/19 职场文书
大学生演讲稿
2014/04/25 职场文书
统计员岗位职责
2015/02/11 职场文书
施工员岗位职责范本
2015/04/11 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python
Golang 字符串的常见操作
2022/04/19 Golang