Solaris 10上为Oracle 11g安装设置内核参数

如果使用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 ,或者一般为物理内存的一半

相关推荐