Oracle内存分配不足的过程解析(业务干挂数据库)

 更新时间:2025年02月15日 10:25:22   作者:IT邦德  
本文介绍了Oracle数据库内存分配不足的问题,原因主要是业务剧增导致的内存不足,通过分析AAS负载、等待事件、transactions和阻塞情况,发现PGA内存出现了严重抖动,感兴趣的朋友一起看看吧

最近一套核心的19C业务库挂了,严重的影响了生产,经过全方位的排查,分析出来的结果业务剧增导致的内存不足,特将本次故障分析分享给大家!

1.故障现象

应用反馈数据库已经夯住,通过监控平台看到很多高警如下,初步判定跟Log file sync有关系,但是别经验主义,详细的分析还要看具体报告!

Warning: log write elapsed time 783ms, size 5KB
*** 2025-01-20T11:56:02.114674+08:00
Warning: log write elapsed time 2215ms, size 4KB
*** 2025-01-20T12:00:30.111624+08:00
Warning: log write elapsed time 657ms, size 146KB
*** 2025-01-20T12:02:39.413947+08:00
Warning: log write elapsed time 534ms, size 109KB
*** 2025-01-20T12:02:40.422849+08:00
Warning: log write elapsed time 578ms, size 86KB
*** 2025-01-20T12:02:40.981447+08:00
Warning: log write elapsed time 558ms, size 41KB

2. 分析过程

2.1 AAS负载

一看AAS,吓一跳啊,AAS>> # of CPUS,这明显的出现了很严重的性能瓶颈。

2.2 等待事件

等待事件是衡量数据库优化情况的重要指标,明显出现了异常。

acknowledge over PGA limit的解释为:如果实例接近PGA_AGGREGATE_LIMIT限制,它将迫使需要更多PGA的进程等待一段时间,同时发现了PGA的内存在故障期间严重出现了内存抖动。

再次确认数据库参数的设置,PGA_AGGREGATE_LIMIT为20G,sga_target为55G,processes为5120的设置,按照官方的经验其实这是是合理的。

(1)OLTP系统:
SGA_TARGET = (total_mem * 0.8) * 0.8
PGA_AGGREGATE_TARGET=(total_mem * 0.8) * 0.2
(2)OLAP(DSS)系统:
SGA_TARGET= (total_mem * 0.8) * 0.5
PGA_AGGREGATE_TARGET =(total_mem * 0.8) * 0.5
(3)PGA_AGGREGATE_LIMIT=3MB*processes
RAC环境为:PGA_AGGREGATE_LIMIT=5MB*processes

那么这次怎么会导致over PGA limit呢?最大可能为业务剧增,那么继续排查。

那么如果想尽快恢复业务,可以临时设置PGA_AGGREGATE_LIMIT=0处理,但这不是长久之计。

2.3 transactions分析

ADDM的报告中也给出了这个结论,明显出现了剧增的业务。

一般来说transactions不超过200都是正常的,或者200左右都是正常的,超多1000就是非常繁忙了!

user calls/(user commits+user rollbacks) 本次平均值为4.84= 4.84/(0.33+0.67) ,平均每4.84 次 user calls 就会有一次 commit,业务提交特别的频繁。

2.4 阻塞分析

比较’log file sync’和’log file parallel write’的平均等待时间,此时IO存在严重的阻塞。

大量的SQL出现严重的library cache lock、latch: shared pool。

3.总结分析

上面的一切初始建议值,都是在上线前的最佳配置建议值,在上线执行一段时间后,系统执行特性真面目就慢慢的体现出来了,这时,就应该依据执行实际需求及时的调整SGA_TARGET与PGA_AGGREGATE_TARGET的值了,但是业务也要做好评估,必须期间提升硬件性能,同时一些低效率低的SQL也要做好优化!

到此这篇关于Oracle内存分配不足的文章就介绍到这了,更多相关Oracle内存分配不足内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • oracle ORA-00988 missing or invalid password 错误

    oracle ORA-00988 missing or invalid password 错误

    在设置数据库实例的密码时,注意不要以数字开头,否则您将会遇到 ORA-00988 missing or invalid password (口令缺失或无效) 错误
    2015-01-01
  • oracle临时表空间无法释放的解决办法

    oracle临时表空间无法释放的解决办法

    Oracle临时表空间主要是用于数据库较大的临时排序用,在PGA分配的工作区空间不足以容纳排序数据时使用临时表空间,但是容易遇到oracle临时表空间无法释放的问题,所以本文给大家介绍了oracle临时表空间无法释放的解决办法,需要的朋友可以参考下
    2024-03-03
  • Oracle 插入超4000字节的CLOB字段的处理方法

    Oracle 插入超4000字节的CLOB字段的处理方法

    我们可以通过创建单独的OracleCommand来进行指定的插入,即可获得成功,这里仅介绍插入clob类型的数据,blob与此类似,这里就不介绍了,下面介绍两种办法
    2009-07-07
  • Oracle数据库事务的开启与结束详解

    Oracle数据库事务的开启与结束详解

    事务是一个整体,这些操作要么全部执行成功,要么全部不执行,下面这篇文章主要给大家介绍了关于Oracle数据库事务的开启与结束的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Oracle中大批量删除数据的方法

    Oracle中大批量删除数据的方法

    Oracle中大批量删除数据的方法...
    2007-03-03
  • Oracle别名使用要点小结

    Oracle别名使用要点小结

    在Oracle中别名也可以在列名和表名中进行,进行别名处理是为了给列或表一个临时项,下面这篇文章主要给大家介绍了关于Oracle别名使用的一些要点小结,需要的朋友可以参考下
    2022-04-04
  • Oracle中的Schema和表空间使用详解

    Oracle中的Schema和表空间使用详解

    Schema是数据库对象集合,用户默认Schema与用户名相同,表空间为逻辑存储单元,由数据文件构成,是恢复最小单位,用户可指定或使用默认表空间(USERS)存储对象
    2025-09-09
  • Oracle CPU高的问题及分析

    Oracle CPU高的问题及分析

    这篇文章主要介绍了Oracle CPU高的问题及分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • ORACLE常见错误代码的分析与解决(三)

    ORACLE常见错误代码的分析与解决(三)

    ORACLE常见错误代码的分析与解决(三)...
    2007-03-03
  • DB2数据库切换为oracle数据库经验教训总结(必看篇)

    DB2数据库切换为oracle数据库经验教训总结(必看篇)

    下面小编就为大家带来一篇DB2数据库切换为oracle数据库经验教训总结(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04

最新评论