暂无图片
分享
一笑而起
2019-08-02
业务期间,oracle无法连接,提示无法分配额外的内存----想知道到底为什么无法分配内存。事后查,似乎内存波动不大
  1. alter日志:图片.png


  2. trace日志:

    图片.png

  3. 配置信息:

    图片.png

    图片.png

  4. 因为连接的内存也分配不出来,所以当时的统计信息也没有跑,直到我们业务的并发任务结束。后续连接后分析的awr和内存变动信息如下:

  5. 图片.png


    图片.png

  6. 连接时的报错:oracle not avaliable  ,无法分配更多内存

  7. 出问题时的操作系统:cpu和内存都ok。并发的job一共35个,当时的两台rac虽然连不上数据库,但是可以看到正在运行的job


    图片.png


    图片.png


收藏
分享
7条回答
默认
最新
一笑而起
暂无图片 评论
暂无图片 有用 0
一笑而起
暂无图片 评论
暂无图片 有用 0
文成

在awr中看到一些存储过程好像是并行执行其他存储过程的,所以如果只是看job的进程可能不是很完整,应该看所有oracle的进程情况是否超过 process的限制。

由于并发导致大量read by other session,进而影响sql执行效率,大量sql可能都在等待。

建议规划一下并发任务的节点分配,优化gc等待的情况

同时对并发任务的sql进行优化,防止出现热点块导致read by other session的情况


暂无图片 评论
暂无图片 有用 0
一笑而起

感谢您的回复。

我能确定progress数量没有超过。

也明白您说的这些建议,我会反馈软件厂商。

不过,针对这个问题,还是没有明白为什么不能连接。您看awr可以看到,两个快照间隔了好几个小时,说明oracle统计信息的后台进程都死掉了,无法进行统计信息。

这跟trace的报错和我无法连接数据库都是吻合的。

可是操作系统内存当时富余,free还有2G。可用内存更多。


这块不是很有思路该怎么继续分析分析。还请您在指点一二

暂无图片 评论
暂无图片 有用 0
一笑而起
另外,对于并发任务,根据此次的awr分析,因为也有大量的gc事件,我是否应该考虑并发的任务跑在一个节点上运行。
暂无图片 评论
暂无图片 有用 0
文成

数据库使用的是amm内存管理,最好改成asmm,可能由于当时内存争用,导致无法给新的连接分配内存空间。

gc的问题,可以考虑限制并发任务的节点

热点块的问题要针对具体的sql了,对BP_MAIN、BP_ROLE的访问看是否可以优化。

暂无图片 评论
暂无图片 有用 0
一笑而起
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏