最近工作中遇到了Oracle进程大量占用系统内存,直到内存占用逼近系统全部内存然后导致系统奔溃的情况。
先说明一下环境。
Windows 2008 服务器,Oracle 10.2.0.4.0 企业版,服务器有16G内存,oracle.exe的内存占用到15.9G导致服务器崩溃。
发现问题时,使用 以下sql查询发现 一个oracle 的会话占用了大量的内存。
SELECT server "连接类型",  s.username,  oSUSEr, NAME,  VALUE/1024/1024 "占用内存MB",  s.SID "会话ID", s.serial#,  spid "操作系统进程ID", p.PGA_USED_MEM,  p.PGA_ALLOC_MEM,  p.PGA_FREEABLE_MEM, p.PGA_MAX_MEM FROM v$session s, v$sesstat st, v$statname sn, v$process p WHERE st.SID = s.SID AND st.statistic# = sn.statistic# AND sn.NAME LIKE 'session pga memory' AND p.addr = s.paddr ORDER BY VALUE DESC

此会话的PGA_USED_MEM,  PGA_ALLOC_MEM,  PGA_FREEABLE_MEM, PGA_MAX_MEM 等值可以达到4G左右,可以断定是会话的问题。 经查虽然我们在oracle中限定了PGA的大小也就是配置了PGA_AGGREGATE_TARGET ,但是PGA_AGGREGATE_TARGET作为一个Target Oracle只会做的尽量不超过此值,并不保证一定不超过。 情况很明显某个会话大量执行没有结束占用了内存。 下面可以通过各种方法查明回来的来源。

我通过Oracle 的EM企业管理器发现,有5条SQL大量的占用了数据库和CPU时间。于是读取SQL的内容逐一执行发现。其中一条SQL执行长达4个小时无法结束。在执行的同时由于需要保存临时结果占用了大量内存。
下一步就是联系相关开发修正SQL问题解决。
此次还有一点不明白,Oracle应该可以限制某个会话的内存上限,但是不知为何没有成功限制。

转载于:https://blog.51cto.com/bobzy/1149379

oracle 占用大量内存不释放的一种解决方案相关推荐

  1. 7种内存泄露场景和13种解决方案

    什么是内存泄露 什么是内存泄露,通俗的来说就是堆中的一些对象已经不会再被使用了,但垃圾收集器却无法将它们从内存中清除. 内存泄漏很严重的问题,因为它会阻塞内存资源并随着时间的推移降低系统性能.如果不进 ...

  2. Oracle JDBC使用lob不释放临时表空间的解决方案

    可以设置这个来让数据库清理lob占用的临时表空间,否则只能等着JDBC关闭连接来释放. alter session set events '60025 trace name context forev ...

  3. Redis删除(del)key后内存无法释放的原因和解决方案

    现象 项目中,redis的 key value 量太多,决定对某个db下的key进行删除,也就是Del key. 在删除前,通过info memory看下内存情况 Memory used_memory ...

  4. 如何占用计算机大量内存,解决办法:针对大量计算机内存使用情况的几种解决方案...

    当许在玩游戏或看电影时,会弹出提示,表明计算机内存已被占用,计算机内存的原因是什么,如果有解决此问题的好的方法,请让编辑器告诉我一些有关计算机内存使用情况的解决方案. 几种计算机内存使用解决方案: 方 ...

  5. Oracle一备份内存就占满卡死,rman备份占用内存问题

    backup incremental level 0 as compressed backupset database plus archivelog; 使用上面的命令备份数据库,占用了大量的内存无法 ...

  6. python 字典操作 内存占用,python - 如何强行释放字典使用的内存? - SO中文参考 - www.soinside.com...

    我正在研究一个Python脚本,该脚本查询几个不同的数据库以整理数据并将所述数据持久保存到另一个数据库.该脚本从大约15个不同数据库中的数百万条记录中收集数据.为了尝试加快脚本速度,我提供了一些缓存功 ...

  7. 如果对象的引用被置为null,;垃圾回收器是否会立即释放对象占用的内存?

    不会,在下一个垃圾回调周期中,这个对象将是被可回收的. 也就是说并不会立即被垃圾收集器立刻回收,而是在下一次垃圾回收时才会释放其占用的内存. 转载于:https://www.cnblogs.com/w ...

  8. java list 占用内存不释放_Java并发编程 - CopyOnWrite容器类

    前言 当我们对List进行遍历的时候,如果list被修改了会抛出java.util.ConcurrentModificationException错误.那么有没有办法在遍历一个list的时候,还向li ...

  9. linux中的xorg进程占用内存资源释放

    文章目录 前言 一.xorg进程 二.释放xorg内存 1.杀死它 2.取消GUI 释放后内存展示 前言 某日巡检发现系统内存Free为0,且swap已经开始使用,从top中查到xorg进程占用的是最 ...

最新文章

  1. 【Smart_Point】unique_ptr与shared_ptr使用实例
  2. 您也使用托管C++吗?
  3. 重磅开源!新型VOLO打破多项记录!
  4. java 切换主线程_Java线程切换(一)
  5. Learning SQL2
  6. IT项目建议书及可行性研究报告撰写格式
  7. 软考中级数据库系统工程师备考经验分享
  8. BackgroundWorker DoWork事件调用多次的问题
  9. 春风十里,Webpower喊营销汪们更聪明地获得理想薪资
  10. 报错 | Cannot find module ‘@better-scroll/core/dist/types/BScroll‘
  11. Python一周小结
  12. 1篇SCI二区+4篇一类可定A档博士!110万房补,享副教授甚至教授待遇!
  13. Ice的HelloWorld(Java)
  14. 由于找不到vcruntime140_1.dll,无法继续执行代码
  15. linux reedme常用单词,【每天打卡记单词】高中英语必背单词3500(Q/R)
  16. 计算机组装主机怎么拆,【电脑组装知识网】电脑主机组装教程之戴尔显示器底座拆卸教程...
  17. 付出不亚于任何人的努力
  18. java 寻找峰值峰谷_Java实现 LeetCode 162 寻找峰值
  19. 脚踏实地小组的实验一
  20. PDF文档解析java Big Faceless

热门文章

  1. 文化中国 系列一:明朝的那些人儿
  2. [技美CG]ShaderToy对照UnityShader方法目录 [入门替换版]
  3. 个人即时到帐支付接口-个人收款即时到账免签约
  4. DevOps流水线(1)什么是Pipeline流水线?
  5. 如何在ubuntu 16.04上安装WebERP
  6. Petalinux建立工程时出现WARNING: /bin/sh is not bash!的解决方法
  7. Java毕设设计-高校运动会管理系统
  8. Python绘图记录专栏
  9. new Date() 获取本月天数、获取本月的最后一天日期
  10. java计算年份_如何计算Java中2个日期之间的年份和年份