关于Oracle的SGA设置,官方有几篇文档给出了说明:
SGA and PGA Management in 11g’s Automatic Memory Management (AMM) (文档 ID 1392549.1)
How To Use Automatic Shared Memory Management (ASMM) In Oracle 10g & 11g (文档 ID 295626.1)
Tips for Sizing the SGA on UNIX (文档 ID 1012819.6)
Database is not starting up with ORA-27102 after enabling hugepages (文档 ID 1990322.1)

在之前,设置内存参数的时候,你常常会遇到这样的报错:

如上的报错,通常是由于你设置的:sga_target和sga_max_target参数过大而导致的。

但这里,你很可能有这样的疑问:
我的物理内存空间明明很大,比方说128G,为什么SGA只设成了8G,就报空间不足的错误了?

原因是,你虽然增加了数据库参数的大小,但是你却没有同步的增加Linux对应参数的值(kernel.shmall)。
需要修改的文件包括:
1. /etc/sysctl.conf

对于sysctl.conf:

这两个参数的值是这样的:
X GB = X * (1024*1024*1024)

这两个参数的值则是这样的:
X GB = X * (1024*1024)

所以,如果你希望你的SGA可以达到36G,那么你可以将kernel.shmall设为:41943040(40GB)
这样就不会有问题了:
ora-03113_2
————————————————
Done。

2 thoughts on “Oracle:SGA(ASMM) and kernel.shmall”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装