如果使用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)