SGA與共享記憶體的關係

edwards63發表於2010-07-23

SGA的設定在Linux/Unix上和一個作業系統核心引數有關,這個引數就是shmmax,不同的作業系統,該引數設定的位置不同。在Solaris上,該引數由/etc/system檔案中的shmsys:shminfo_shmmax定義;在Linux上,則由/proc/sys/kernel/shmmax引數定義。

Shmmax核心引數定義的是系統允許的單個共享記憶體段的最大值,如果該引數設定小於Oracle SGA的設定值,那麼SGA可以建立成功,但是會被分配到多個共享記憶體段。通常推薦透過調整shmmax的設定,將SGA限制在一個共享記憶體段中。

Linux下透過以下命令來檢視:

#more /proc/sys/kernel/shmmax

可以透過修改/etc/sysctl.conf檔案來永久更改shmmax引數的值:

Kernel.shmmax=6871947673664G,一般應該大於SGA的設定值)

實際在新的Redhat Linux 5.4上安裝Oracle11gR2時,安裝指令碼自動設定的該引數值為64G,而作業系統記憶體只有16G,看來今後基本不用擔心SGA超過該引數了!

引數設定完成後,在資料庫執行時,可以透過以下命令來檢視共享記憶體模組的分配,看Oracle是否被分配在同一段共享記憶體段裡:

#ipcs -sa

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

相關文章