您好,登錄后才能下訂單哦!
在安裝數據庫時需要配置以下內核參數:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
引用自:https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#LADBI1187
信號量和共享內存是兩組截然不同的操作系統資源。信號量是Oracle用于進程間通信的系統資源,它們占用相對較小的內存空間,而共享內存用于包含SGA并且可以占用大部分物理內存。
aio-max-nr:所有活動異步 I/O 上下文中可允許的最多事件數。默認值為 65536;
file-max:當前內核可以打開的最大的文件句柄數;
shmmax:以字節為單位規定內核可允許的最大共享內存段。64位默認值為 68719476736;32位默認值為 4294967295。注:但內核支持的值比這個值要多得多,oracle中最小配置為536870912,64位最大值為物理內存-1字節,32位最大值為小于4GB-1個字節的值或4294967295,推薦設置為物理內存大小的1/2;
shmall:以字節為單位規定一次在該系統中可以使用的共享內存總量。64位默認值為4294967296;32位默認值為 268435456。oracle推薦的最小值為:2097152,在內存較小時可以使用小于2097152的值,內存較大時(超過8G)需要通過以下公式進行計劃:公式1:memtotal/pagesize。公式2:(SHMMAX/getpagesize()*(SHMMNI/16))。
shmmni:系統范圍內最大共享內存段數量。在 64 位和 32 位架構機器中的默認值都是 4096
sem:即semaphores縮寫。共有四個值與之對應,oracle建議的值為kernel.sem = 250 32000 100 128 ,分別對應:
SEMMSL | maximum number of semaphores in a semphore set | 250 |定義每個Oracle數據庫的最大信號量數。|取值范圍1 – 65536
SEMMNS | maximum number of semphores in the system | 32000 |定義系統上的最大信號量。 |取值范圍1 – 2147483647
SEMOPM | maximum number of operations per semop(P) call | 100 |定義每個semop調用的最大操作數。 |取值范圍100
SEMMNI | maximum number of semaphore sets in system | 128 |定義整個系統中信號量集的最大數量 |取值范圍1 – 32768
規則:
SEMMNI*SEMMSL>=SEMMNS,SEMMNS=系統中每個實例process+10之和+2*max(process)
操作系統與sysctl中kernel.sem參數的對應關系
$ ipcs -ls
------ Semaphore Limits --------
max number of arrays = 128 // SEMMNI
max semaphores per array = 250 // SEMMSL
max semaphores system wide = 32000 // SEMMNS
max ops per semop call = 100 // SEMOP
semaphore max value = 32767
與信號量相關的問題:
問題1:
SQL> startup nomount
ORA-27154: post/wait create failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpcreates
[root@prodb linux]# ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
0x00000000 0 root 600 1
0x00000000 65537 root 600 1
0x9a31ff94 1507331 oracle 640 154
本例中154>max number of arrays = 128需要調整SEMMNI值為200及以上。
問題2:
Getting ORA-600 [OSDEP_INTERNAL] errors while starting up the database:
ORA-00600: internal error code, arguments: [OSDEP_INTERNAL],
[], [], [], [], [], [], []
ORA-27302: failure occurred at: skgpwreset1
ORA-27303: additional information: invalid shared ctx
ORA-27146: post/wait initialization failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpsemsper
semmns值太小,修改為:kernel.sem = 256 32768 100 228
信號量的刪除
信號量或共享內存錯誤主要出現在實例啟動時(特別是'startup nomount'階段)。這是Oracle嘗試獲取實例的信號量和共享內存的唯一時間。在正常的數據庫操作期間,很少出現與信號量或共享內存相關的錯誤。發生這些錯誤的最常見情況是在創建新數據庫期間。但是,有時當Oracle實例崩潰時,操作系統可能無法釋放共享內存段。這限制了實例可用于再次啟動的共享內存總量。在這種情況下,您需要手動刪除這些段。
[oracle@prodb ~]$ $ORACLE_HOME/bin/sysresv
IPC Resources for ORACLE_SID "PROD3" :
Shared Memory:
ID KEY
1966083 0x00000000
1998852 0x00000000
2031621 0x4db7973c
Semaphores:
ID KEY
1507331 0x9a31ff94
Oracle Instance alive for sid "PROD3"
Linux:
% ipcrm shm 2031621 1998852 1966083
Other Unix:
% ipcrm -m 12189717
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。