服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Oracle - Oracle sysaux表空间异常增长的完美解决方法

Oracle sysaux表空间异常增长的完美解决方法

2022-09-03 15:40徽州吴彦祖 Oracle

sysaux表空间会因为多种情况而增大,下面这篇文章主要给大家介绍了关于Oracle sysaux表空间异常增长的完美解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

发现问题

某一业务系统数据库,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 sysaux表空间异常增长内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/m0_37625564/article/details/123480814

延伸 · 阅读

精彩推荐
  • OracleOracle如何找到引起账号锁定的IP的一点思考与总结

    Oracle如何找到引起账号锁定的IP的一点思考与总结

    在ORACLE数据库中,如果没有修改过FAILED_LOGIN_ATTEMPTS的话,默认10次输入错误密码后就会锁住用户。...

    DBA闲思杂想录10902021-06-09
  • OracleOracle Max函数使用中出现的问题

    Oracle Max函数使用中出现的问题

    在Oracle Max函数使用中,会出现一些问题,本文将介绍解决方法,需要的朋友可以了解下 ...

    Oracle教程网3072019-11-16
  • OracleOracle SqlPlus设置Login.sql的技巧

    Oracle SqlPlus设置Login.sql的技巧

    sqlplus在启动时会自动运行两个脚本:glogin.sql、login.sql这两个文件,接下来通过本文给大家介绍Oracle SqlPlus设置Login.sql的技巧,对oracle sqlplus设置相关知识感兴...

    今夜通宵3012019-12-25
  • Oracleoracle中得到一条SQL语句的执行时间的两种方式

    oracle中得到一条SQL语句的执行时间的两种方式

    这篇文章主要介绍了oracle中如何得到一条SQL语句的执行时间,有两种可行方式,大家可以参考下 ...

    oracle教程网5442019-12-09
  • Oracleoracle 日期时间函数使用总结

    oracle 日期时间函数使用总结

    经常写 sql 的同学应该会接触到一些 oracle 的日期时间函数, 例如: 财务软件或者人力资源软件需要按照每年, 每季度, 每月, 甚至每个星期来进行统计 ...

    oracle教程网2212019-12-09
  • OracleOracle性能究极优化

    Oracle性能究极优化

    Linux Journal 发表了一篇优化 Oracle 数据库的文章,感觉十分的有用。简要介绍其摘要和大家共同分享 Linux 在企业级数据库上应用。 目前,HP,Compaq,Dell,...

    Oracle教程网2632019-10-21
  • Oracleoracle单库彻底删除干净的执行步骤

    oracle单库彻底删除干净的执行步骤

    oracle单库彻底删除干净:关闭数据库、关监听、清除残余文件、删除用户和组,详细操作如下,感兴趣的朋友可以参考下哈 ...

    oracle教程网3812019-11-22
  • OracleOracle基础:程序中调用sqlplus的方式

    Oracle基础:程序中调用sqlplus的方式

    今天小编就为大家分享一篇关于Oracle基础:程序中调用sqlplus的方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    liumiaocn2472020-04-10