ORA-27122: unable to protect memory
Cause: mprotect() call failed
Action: contact Oracle support
ORA-27122是一个由操作系统返回的内存分配和护卫错误,它代表着Oracle无法在自己完成内存护卫前将其扩展到分配给它的虚拟内存空间,这也就意味着Oracle无法拥有足够的内存来运行自己。
当Oracle尝试分配虚拟内存时,该操作系统已经把存储器范围分配给另一个进程,从而导致Oracle无法完成其它必需的内存分配,从而导致ORA-27122。
ORA-27122一般由于Oracle尝试分配的虚拟内存超过了系统可以处理的范围而引起,如机器上系统已分配4G 外加2 GB 的swap 内存,但Oracle实际需要5G虚拟内存来运行,从而导致该错误发生。
1、检查你的机器是否有足够的内存来满足Oracle实际需要量;
2、检查错误信息背景进程的PID,确定当前运行的是哪个进程,关闭它;
3、检查swap文件是否被超出,如果超出了,增加swap文件;
4、也可以重启机器,让它重新分配虚拟内存。