排查并解决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 DGMGRL ORA-16603报错的解决方法(DG Broker)
Apr 06 Oracle
Oracle创建只读账号的详细步骤
Jun 07 Oracle
DBCA命令行搭建Oracle ADG的流程
Jun 11 Oracle
Oracle以逗号分隔的字符串拆分为多行数据实例详解
Jul 16 Oracle
C#连接ORACLE出现乱码问题的解决方法
Oct 05 Oracle
Oracle中update和select 关联操作
Jan 18 Oracle
Oracle使用别名的好处
Apr 19 Oracle
分析SQL窗口函数之排名窗口函数
Apr 21 Oracle
oracle数据库去除重复数据
May 20 Oracle
在Oracle表中进行关键词搜索的过程
Jun 10 Oracle
Oracle数据库事务的开启与结束详解
Jun 25 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
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
php动态添加url查询参数的方法
2015/04/14 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
js登录弹出层特效
2014/03/07 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
Python自动发邮件脚本
2017/03/31 Python
Python3基于sax解析xml操作示例
2018/05/22 Python
使用Scrapy爬取动态数据
2018/10/21 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
python使用Matplotlib改变坐标轴的默认位置
2019/10/18 Python
如何基于python测量代码运行时间
2019/12/25 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
JDO的含义
2012/11/17 面试题
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
揠苗助长教学反思
2014/02/04 职场文书
十八届三中全会宣传方案
2014/02/21 职场文书
2014年医院工作总结
2014/11/20 职场文书
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS