安裝oracle資料庫時,設定linux核心引數的意義

okzhixiang發表於2007-09-17

一般我們在redhat上裝oracle的時候都需要修改os的引數

例如:

sem
shmmax
shmmni
shmall
file-max

[@more@]

設定 SHMMAX

SHMMAX 引數定義共享記憶體段的最大尺寸(以位元組為單位)。 Oracle SGA 包含共享記憶體,而不正確地設定 SHMMAX 可能會限制 SGA 的大小。在設定 SHMMAX 時,切記 SGA 的大小應該適合於一個共享記憶體段。 SHMMAX 設定不足可能會導致以下問題:

ORA-27123:unable to attach to shared memory segment

您可以透過執行以下命令來確定 SHMMAX 的值:

# cat /proc/sys/kernel/shmmax

設定 SHMMNI 我們現在來看 SHMMNI 引數。這個核心引數用於設定系統範圍內共享記憶體段的最大數量。該引數的預設值是 4096 。這一數值已經足夠,通常不需要更改。 您可以透過執行以下命令來確定 SHMMNI 的值:
# cat /proc/sys/kernel/shmmni
4096

設定 SHMALL 最後,我們來看 SHMALL 共享記憶體核心引數。該引數控制著系統一次可以使用的共享記憶體總量(以頁為單位)。簡言之,該引數的值始終應該至少為:
ceil(SHMMAX/PAGE_SIZE)
SHMALL
的預設大小為 2097152 ,可以使用以下命令進行查詢:
# cat /proc/sys/kernel/shmall
2097152
SHMALL
的預設設定對於我們的 Oracle9 i RAC 安裝來說應該足夠使用。 注意: 在 i386 平臺上 Red Hat Linux 的頁面大小 為 4096 位元組。但是,您可以使用 bigpages ,它支援配置更大的記憶體頁面尺寸。

設定訊號 既然我們已經配置了共享記憶體設定,現在就該考慮配置我們的 訊號 了。對訊號的最佳描述是,它是用於在共享資源(如共享記憶體)的程式(或程式中的執行緒)之間提供同步的計數器。在系統 V 中支援訊號集,其中每一項都是訊號計數。當應用程式請求訊號時,它使用集合來完成此工作。 要確定所有的訊號限制,可使用以下命令:

# ipcs -ls

------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
您還可以使用以下命令:
# cat /proc/sys/kernel/sem
250 32000 32 128

設定檔案控制程式碼 在配置我們的 Red Hat Linux 伺服器時,確保檔案控制程式碼的最大數量足夠大是非常關鍵的。檔案控制程式碼設定表示您在 Linux 系統中可以開啟的檔案數量。 使用以下命令來確定整個系統中檔案控制程式碼的最大數量:
# cat /proc/sys/fs/file-max
32768

Oracle 建議將整個系統的檔案控制程式碼值至少設定為 65536 透過直接更改 /proc 檔案系統,您可以不必重新啟動機器而改變檔案控制程式碼最大數量的預設設定。我使用的方法是將以下命令置於 /etc/rc.local 啟動檔案中:
# echo "65536" > /proc/sys/fs/file-max
您還可以使用 sysctl 命令來更改 SHMMAX 的值:
# sysctl -w fs.file-max=65536
最後,您可以透過將該核心引數插入到 /etc/sysctl.conf 啟動檔案中,使這種更改永久有效:
# echo "fs.file-max=65536" >> /etc/sysctl.conf

設定檔案控制程式碼 在配置我們的 Red Hat Linux 伺服器時,確保檔案控制程式碼的最大數量足夠大是非常關鍵的。檔案控制程式碼設定表示您在 Linux 系統中可以開啟的檔案數量。 使用以下命令來確定整個系統中檔案控制程式碼的最大數量:
# cat /proc/sys/fs/file-max
32768
Oracle
建議將整個系統的檔案控制程式碼值至少設定為 65536 透過直接更改 /proc 檔案系統,您可以不必重新啟動機器而改變檔案控制程式碼最大數量的預設設定。我使用的方法是將以下命令置於 /etc/rc.local 啟動檔案中:
# echo "65536" > /proc/sys/fs/file-max

net.ipv4.ip_local_port_range = 1024 65000
設定當本地系統向外發起tcp或udp連線請求時使用的埠範圍。設定值為兩個整數,預設為“1024 4999”。

net.core.rmem_default = 1048576 # 套接字接收緩衝區大小的預設值
net.core.rmem_max = 1048576 # 套接字接收緩衝區大小的最大值
net.core.wmem_default = 262144 # 套接字傳送緩衝區大小的預設值
net.core.wmem_max = 262144 # 套接字傳送緩衝區大小的最大值

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7185924/viewspace-969782/,如需轉載,請註明出處,否則將追究法律責任。

相關文章