如果使用Solaris系統預設的核心參數,會導致建立資料庫時出現Out of memory錯誤。
Solaris 10以前的版本是在/etc/system中設定系統參數,這種方式在Solaris 10/OpenSolaris中已經不用。
取而代之的是基於project的配置方式。
a. 修改 /etc/system,在其中添加 (Solaris 10 這種方式已不使用)
#/etc/system
set semsys:seminfo_semmni=100
set semsys:seminfo_semmsl=256
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmni=100
b. 以root使用者身份,添加group.dba項目
#projadd -U Oracle -p 100 group.dba
c. 修改/etc/user_attr,在其中添加
oracle::::project=group.dba
d. 切換到oracle使用者環境,用id -p命令檢驗b、c兩步的正確性。
#su oracle
$id -p uid=100(oracle) gid=100(dba) projid=100(group.dba)
注意:如果id -p命令結果是oracle使用者的預設project是建立的group.dba,則說明b、c兩步操作正確。
e. 查看項目group.dba的資源配置
#prctl -n project.max-shm-memory -i project group.dba
project: 100: oracle NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT project.max-shm-memory privileged 2.00GB - deny
f. 調整項目group.dba的資源分派
#prctl -n project.max-shm-memory -v 4gb -r -i project group.dba
#projmod -sK "project.max-shm-memory=(privileged,4294967295,deny)" group.dba
第一命令動態調整項目group.dba資源配置值,第二命令將調整值寫入/etc/project檔案中,使系統重啟後調整值依然有效。
注意:為了調整項目group.dba的資源配置,必須保證系統此時至少有一個會話是以oracle使用者身份登入的。
即為了調整oracle使用者的項目group.dba的資源,必須至少另開一個終端,以su oracle切換到oracle使用者身份。
查看調整後的結果:
#cat /etc/project
system:0::::
user.root:1::::
noproject:2::::
default:3::::
group.staff:10::::
group.dba:100::::project.max-shm-memory=(privileged,4294967295,deny)
#
備忘:
shmsys:shminfo_shmmax = 2147483648
// 該參數定義了共用記憶體段的最大尺寸(以位元組為單位)。其值應>=sag_max_size初始化參數的大小,否則SAG由多個記憶體段構成,效率降低,
還要不小於實體記憶體的一半,預設情況下在32位x86系統中,Oracle SGA最大不能超過1.7GB.
預設為32M,對於oracle來說,該預設值太低了,通常將其設定為2G ,或者一般為實體記憶體的一半
在CentOS 6.4下安裝Oracle 11gR2(x64)
Oracle 11gR2 在VMWare虛擬機器中安裝步驟
Debian 下 安裝 Oracle 11g XE R2