【轉】Oracle安裝相關Linux引數

ljm0211發表於2012-06-20

設定的引數

引數名字
含義
設定
設定共享記憶體
共享記憶體透過將通用的結構和資料放在共享記憶體段中,使得程式可以對它們進行訪問。這是現有最快的程式間通訊(IPC)方式 主要是因為資料在程式之間傳遞時沒有涉及到核心的操作。在程式之間不需要複製資料。
Oracle 將共享記憶體用於它的系統全域性區 (SGA),這是一個由所有的 Oracle 備份程式及前臺程式所共享的記憶體區域。為 SGA 分配足夠的容量對於 Oracle 的效能非常重要,因為它負責儲存資料庫緩衝區快取記憶體、共享 SQL、訪問路徑以及更多。
要確定所有共享記憶體的限制,可使用以下命令:
# ipcs -lm
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 32768
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1
SHMMAX
SHMMAX 引數定義共享記憶體段的最大大小(以位元組為單位)。
Oracle SGA 由共享記憶體組成,且錯誤設定 SHMMAX 可能會限制 SGA 的大小。在設定 SHMMAX 時,切記 SGA 的大小應該適合於一個共享記憶體段。SHMMAX 設定不足可能會導致以下問題:
ORA-27123:unable to attach to shared memory segment
您可以透過執行以下命令來確定 SHMMAX 的值:
# cat /proc/sys/kernel/shmmax
33554432
SHMMAX 的預設值為 32MB。通常,這個值對於配置 Oracle SGA 而言太小了。我通常使用以下任一方法將 SHMMAX 引數設定為 2GB
* 透過直接更改 /proc 檔案系統,你無需重新啟動計算機便可以改變 SHMMAX 的預設設定。可以使用以下方法動態設定 SHMMAX 的值。透過將此命令置於 /etc/rc.local 啟動檔案中可以使它永久有效:
# echo "2147483648" > /proc/sys/kernel/shmmax
* 您還可以使用 sysctl 命令來更改 SHMMAX 的值:
# sysctl -w kernel.shmmax=2147483648
* 最後,透過將該核心引數插入到 /etc/sysctl.conf 啟動檔案中,您可以使這種更改永久有效:
# echo "kernel.shmmax=2147483648" >> /etc/sysctl.conf
SHMMNI
我們現在看一下 SHMMNI 引數。這個核心引數用於設定系統範圍內共享記憶體段的最大數量。該引數的預設值是 4096。該值足以滿足需要,因此通常無需更改。
可以透過執行以下命令來確定 SHMMNI 的值:
# cat /proc/sys/kernel/shmmni
4096
SHMALL
該引數控制系統一次可以使用的共享記憶體總量(以頁為單位)
簡言之,該引數的值始終應至少為:
ceil(SHMMAX/PAGE_SIZE)
SHMALL 的預設大小為 2097152,並可以使用以下命令進行查詢:
# cat /proc/sys/kernel/shmall
2097152
SHMALL 的預設設定足以滿足 Oracle RAC 10g 安裝的需要。
(注意:i386 平臺上的 Red Hat Linux 中的頁面大小為 4,096 位元組。但您可以使用 bigpages,它支援配置更大的記憶體頁面大小。)
設定訊號
對訊號的最佳描述是,它是用於在共享資源(如共享記憶體)的程式(或程式中的執行緒)之間提供同步的計數器。Unix System 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
SEMMSL
SEMMSL 核心引數用於控制每個訊號集合的最大訊號數。
Oracle 建議將 SEMMSL 設定為 init.ora 檔案(適用於 Linux 系統上所有資料庫)中的最大 PROCESS 例項引數設定再加上 10。此外,Oracle 建議將 SEMMSL 設定為不小於 100
SEMMNI
SEMMNI 核心引數用於控制整個 Linux 系統中訊號集的最大數量。
Oracle 建議將 SEMMNI 設定為不小於 100
SEMMNS
SEMMNS 核心引數用於控制整個 Linux 系統中的訊號(而非訊號集)的最大數量
Oracle 建議將 SEMMNS 設定為系統上每個資料庫的 PROCESSES 例項引數設定之和,加上最大的 PROCESSES 的兩倍,最後為系統上的每個 Oracle 資料庫加上 10
使用以下計算式確定可以在 Linux 系統上分配的訊號的最大數量。它將是以下兩者中較小的一個值:
SEMMNS (SEMMSL * SEMMNI)
SEMOPM
SEMOPM 核心引數用於控制每個 semop 系統呼叫可以執行的訊號運算元。
semop 系統呼叫(函式)能夠使用一個 semop 系統呼叫完成多個訊號的操作。一個訊號集可以擁有每個訊號集中最大數量的 SEMMSL,因此建議將 SEMOPM 設定為等於 SEMMSL
Oracle 建議將 SEMOPM 設定為不小於 100
設定訊號核心引數
我想更改(增加)的唯一引數是 SEMOPM。所有其他的預設設定可以完全滿足我們的示例安裝。
* 您可以透過直接更改 /proc 檔案系統,不必重新啟動機器而更改所有訊號設定的預設設定。該方法將以下內容置於 /etc/rc.local 啟動檔案中:
# echo "250 32000 100 128" > /proc/sys/kernel/sem
* 您還可以使用 sysctl 命令來更改所有訊號設定的值:
# sysctl -w kernel.sem="250 32000 100 128"
* 最後,可以透過將核心引數插入到 /etc/sysctl.conf 啟動檔案中以使此更改永久有效:
# echo "kernel.sem=250 32000 100 128" >> /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
* 您還可以使用 sysctl 命令來更改 SHMMAX 的值:
# sysctl -w fs.file-max=65536
* 最後,可以透過將核心引數插入到 /etc/sysctl.conf 啟動檔案中以使此更改永久有效:
# echo "fs.file-max=65536" >> /etc/sysctl.conf
可以透過使用以下命令查詢檔案控制程式碼的當前使用情況:
# cat /proc/sys/fs/file-nr
613 95 32768
file-nr 檔案顯示了三個引數:分配的檔案控制程式碼總數、當前使用的檔案控制程式碼數以及可以分配的最大檔案控制程式碼數。
(注意:如果需要增大 /proc/sys/fs/file-max 中的值,請確保正確設定 ulimit。對於 2.4.20,通常將其設定為 unlimited。使用 ulimit 命令來驗證 ulimit 設定:
# ulimit
unlimited

如何設定

1. 透過在/etc/sysctl.conf中配置
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
修改後執行sysctl -p 命令使得核心改變立即生效。以後重啟機器也會按照這些配置修改機器環境
2. /etc/rc.d/rc.local中直接寫入/proc中去/etc/rc.d/rc.local檔案的最後,加入
echo 8192 > /proc/sys/fs/file-max
echo 32768 > /proc/sys/fs/inode-max
echo 536870912 > /proc/sys/kernel/shmmax
echo 4096 > /proc/sys/kernel/shmmin
還需要在/etc/security/limits.conf檔案增加如下內容:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

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

相關文章