Linux下安裝oracle資料庫核心引數說明

2021-09-27 04:55:35 字數 4043 閱讀 2774

在安裝資料庫時需要配置以下核心引數:

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軟體和資料庫檔案的目...