1. 程式人生 > >新增SGA後啟動資料庫報ORA-27102: out of memory

新增SGA後啟動資料庫報ORA-27102: out of memory

centos6.2 X64    oracle10.2  記憶體24G

sql>alter system set sga_max_size=8192M scope=spfile;

sql>alter system set sga_target=8192M scope=spfile;

sql>shutdown immediate;

sql>startup

ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device

經查,發現是一個引數設定的不對/etc/sysctl.conf的shmall

shmall這個引數設定的值太小就會報ORA-27102: out of memory對於32位系統,一頁=4k,也就是4096位元組。kernel.shmall = 2097152  就是 2097152*4k/1024/1024 = 8G 就是說可用共享記憶體一共 8G設定的一般規律kernel.shmall = 2097152    ---記憶體8Gkernel.shmall = 4194304    ---記憶體16G

kernel.shmall = 6291456 ---記憶體24G
kernel.shmall = 8388608    ---記憶體32G我改的kernel.shmall = 41943040  ,結果好了,這樣可以會留下什麼後遺症

這裡,對每個引數值做個簡要的解釋和說明。    (1)shmmax:該引數定義了共享記憶體段的最大尺寸(以位元組為單位)。預設為32M,對於oracle來說,該預設值太低了,通常將其設定為2G。    (2)shmmni:這個核心引數用於設定系統範圍內共享記憶體段的最大數量。該引數的預設值是 4096 。通常不需要更改。    (3)shmall:該引數表示系統一次可以使用的共享記憶體總量(以頁為單位)。預設值就是2097152,通常不需要修改。    (4)sem:該引數表示設定的訊號量。    (5)file-max:該引數表示檔案控制代碼的最大數量。檔案控制代碼設定表示在linux系統中可以開啟的檔案數量。
    修改好核心以後,執行下面的命令使新的配置生效。# /sbin/sysctl -p