重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1700|回复: 0
打印 上一主题 下一主题

[Oracle] mmap(offset=217747456, len=4096) failed with errno=12 for the file oraclexxx

[复制链接]
跳转到指定楼层
楼主
发表于 2021-12-24 15:20:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ORA-04030 (callheap,ioc_nread_clob2) (Doc ID 1929790.1)               

In this Document
Symptoms
Cause
Solution
References

APPLIES TO:
Oracle Database Cloud Schema Service - Version N/A and later
Oracle Database Exadata Express Cloud Service - Version N/A and later
Gen 1 Exadata Cloud at Customer (Oracle Exadata Database Cloud Machine) - Version N/A and later
Oracle Cloud Infrastructure - Database Service - Version N/A and later
Oracle Database Backup Service - Version N/A and later
Information in this document applies to any platform.
SYMPTOMS
ORA-04030: out of process memory when trying to allocate 65080 bytes (callheap,ioc_nread_clob2)

in alert log


CAUSE
OS limitation.

ORA-04030 trace file shows the system was running out of map entries:

mmap(offset=170967040, len=4096) failed with errno=12 for the file <FILENAME>
mmap(offset=170967040, len=4096) failed with errno=12 for the file <FILENAME>
mmap(offset=170967040, len=4096) failed with errno=12 for the file <FILENAME>


SOLUTION
1.Increase the amount of memory an UNIX process can request and use from the operating system. Set the ulimit value to UNLIMITED for the OS user that owns Oracle software (oracle):

stack --> UNLIMITED
data --> UNLIMITED

For more information please refer to:
NOTE:188149.1 How to Display and Change UNIX Process Resource Limits

Check that the OS user that started the listener process has the same limits.

NOTE: Any change to UNIX limits will not take effect until the database and listener are bounced. In other words, restart the database and listener after making any change to UNIX limits. Before restarting the database and listener check the limit values for oracle user to see if they were changed.

2. These errors usually show up because of running out of map entries from the OS. There are only 65536 memory map entries per process.

Change the page count at the OS level:

$ more /proc/sys/vm/max_map_count
$ sysctl -w vm.max_map_count=200000

-- OR --

Adjust the realfree heap pagesize within the database by setting the following parameters in the init/spfile and restart the database.

_use_realfree_heap=TRUE
_realfree_heap_pagesize_hint = 262144

Set:

ALTER SYSTEM SET "_use_realfree_heap"=TRUE SCOPE=SPFILE;
ALTER SYSTEM SET "_realfree_heap_pagesize_hint"=262144 SCOPE=SPFILE;


and restart the instance.



NOTE: In Oracle 12c, the parameter _realfree_heap_pagesize_hint is changed to _realfree_heap_pagesize.
In 12C, _realfree_heap_pagesize = 262144

REFERENCES
NOTE:188149.1 - How to Display and Change UNIX Process Resource Limits
NOTE:443746.1 - Automatic Memory Management (AMM) on 11g & 12c
NOTE:1325100.1 - PLSQL Procedure Causing ORA-04030: (pga heap,control file i/o buffer) And ORA-04030: (koh-kghu sessi,pmuccst: adt/record) or ORA-04030: (koh-kghucall ,pmucalm coll) Errors


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-16 07:15 , Processed in 0.105657 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表