在安裝資料庫時需要配置以下核心引數:
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
引用自:訊號量和共享記憶體是兩組截然不同的作業系統資源。訊號量是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
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
LINUX下安裝ORACLE軟體
1 以root使用者登陸 df k tmp 需要最少400m cat etc issue 檢視linux版本 usr sbin groupadd oinstall 建立oracle inventory group 2 建立oracle使用者 usr sbin useradd g oinstall o...
oracle 安裝 在linux 下
環境說明 red hat enterprise linux server release 5.3 oracle10g for l inux 1.設定 kernel 引數 命令 vi etc sysctl.conf 新增以下引數值 kernel.shmall 2097152 可以使用的共享記憶體的總量...
linux下安裝oracle步驟
1,驗證系統要求 2,建立oracle組和使用者帳戶 cd usr sbin groupadd oinstall groupadd dba useradd m g oinstall g dba oracle id oracle passwd oracle 3,建立儲存oracle軟體和資料庫檔案的目...