Oracle安裝相關Linux引數(轉)

zhouwf0726發表於2019-04-23

Oracle安裝有關的Linux引數

設定的引數

引數名字

含義

設定

設定共享記憶體

共享記憶體通過將通用的結構和資料放在共享記憶體段中,使得程式可以對它們進行訪問。這是現有最快的程式間通訊(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/756652/viewspace-242331/,如需轉載,請註明出處,否則將追究法律責任。

相關文章