在Solaris10中为Oracle配置系统资源
文/呼必斯哈拉图
摘要:
在
Solaris10
这个版本中的系统资源配置管理较之前的版本有较大的变化。诸如
Oracle
等,
在安装、运行、优化等过程中需要对系统资源(内核参数,信号量,内存空间,
CPU
时间等)进行调整和设置后才能运行良好的的大型应用来说,熟悉
Solaris10
的这种新的资源管理方法和机制是非常有必要的。 本文将介绍在
Oracle
的安装、使用过程中用到的一些资源配置的命令和方法。以便为更多的
Oracle
和其它类似情况的用户提供参考。
一、
预备知识
A.
在
Solaris10
中仍然可以在
/etc/system
中设置需要的系统资源。但是有很多以前可以用在此文件中进行设置的参数在
Solaris10
中已经废止。如图:
其中带有
*
号的项目仍然可以在
/etc/system
中进行设置。但是其默认值有所变化。见下表:
资源控制标识
|
废止选项
|
旧默认值
|
最大值
|
新默认值
|
process.max-msg-qbytes
|
msginfo_msgmnb
|
4096
|
ULONG_MAX
|
65536
|
process.max-msg-messages
|
msginfo_msgtq
l
|
40
|
UINT_MAX
|
8192
|
process.max-sem-ops
|
seminfo_semopm
|
10
|
INT_MAX
|
512
|
process.max-sem-nsems
|
seminfo_semmsl
|
25
|
SHRT_MAX
|
512
|
project.max-sem-ids
|
seminfo_semmni
|
10
|
224
|
128
|
project.max-shm-memory
|
shminfo_shmmax
|
0x800000
|
UINT64_MAX
|
1/4
物理内存
|
project.max-shm-ids
|
shminfo_shmmni
|
100
|
2
24
|
128
|
project.max-msg-ids
|
msginfo_msgmni
|
50
|
224
|
128
|
注意:写在
/etc/system
文件中的配置只有重新启动后才能生效。
B.
可以用项目数据库(
project database
)对单个进程或单个项目进行资源分配的设置。项目数据库的文件是
/etc/project
。其格式如下:
projname:projid:comment:user-list:group-list:attributes
其中:
projname------
给定的项目名称
Projid--------
给定的项目标识符
Comment-------
项目说明
User-list-----
用户列表(表明此用户使用此设置)
Group-list----
组列表(表明此用户组的用户使用此设置)
Attributes----
设定属性(是
key=value pair
)
*
更多详细信息请查阅参考资料
1
。
C.
用
projects,projadd,projmod,projdel,prctl
进行系统资源的配置。
其中:
project
用于查看已经配置的
project
参数
projadd
用于创建
project
projmod
用于修改
project
中的属性值
projdel
用于删除
project
prctl
用于动态设置系统资源配置(增,删,改)
注意:用
proj*
设置的值都会自动写入到
/etc/project
文件里。而
prctl
设置的值在系统重新启动后就会丢失(需要重新设置)。关于
proj*
命令的用法请看手册
(
例如:
#man projadd).
二、
Oracle
中系统资源的调整
A.
用
proj
系列命令来对
Oracle
安装时的参数进行设置管理
在
Oracle
安装时下表中的这些参数是需要进行设置的。下面就具体的在
Solaris10
下面一步一步的设置这些值。这些值要
root
用户或者有相同权限的用户进行设置。
(
假设已经建好了一个
oracle
用户
)
semsys:seminfo_semmni
|
project.max-sem-ids
|
100
|
semsys:seminfo_semmsl
|
process.max-sem-nsems
|
256
|
shmsys:shminfo_shmmax
|
project.max-shm-memory
|
4294967295
|
shmsys:shminfo_shmni
|
project.max-shm-ids
|
100
|
A
.
1
验证项目信息
#more /etc/project
看一下目前已经存在的项目
可以看到并没有针对
oracle
用户设置
project
。这样
oracle
的默认
project
就是
default:3
了。通过下面的几个命令验证一下吧!
#su – oracle
#projects
显示当前用户参加的
projects
屏幕回显为:
default
也可以用
#id –p
来显示当前用户的默认
project
。此时屏幕回显为
uid=102(oracle)gid=(oinstall)projid=3(default)
#exit
返回到
root
用户
A.2
为
oracle
用户创建新项目
#projadd –U oracle –p 1234 oracle_param
用户
A.1
中的方法查看就可以看到
oracle
用户已经多了一个
oracle_param
的
project
。可是其默认的
project
还是
default:3
。
#projadd –U oracle –p 1233 –c “oracle parameters” user.oracle
再次用上面的方法验证,这次不但多了一个
user.oracle project
而且
oracle
用户的默认
project
也变成了
user.oracle
了。实际上这两个
project
我们只用一个就可以了。用
#projdel oracle_param
将这个不用的
project
删除掉(如果愿意可以用前面的方式进行验证)。
提示:
-U
指定用户,
-p
指定项目的识别号,
-c
用于项目信息说明
A.2
在项目中添加属性设置
#projmod –a –K “
project.max-shm-memory=(priv,4294967295,deny)” user.oracle
#more /etc/project
看一下这个值是否已经保存
到
/etc/project
中
用相同的方法设置余下的属性
#projmod –a –K “
project.max-sem-ids =(priv,100,deny)” user.oracle
#projmod –a –K “
process.max-sem-nsems =(priv,256,deny)” user.oracle
#projmod –a –K “
project.max-shm-ids =(priv,100,deny)” user.oracl
提示:
-a
表示增加,
-r
表示删除,
-K
代表
key
,用于具体属性的设置。可以将将几个参数一起设置,例如:
#projmod –a –K “…” –K “…”
。用
project
方式设置的这些选项在系统重新启动后也不会丢失(只要进入到
oracle
用户这些设置就生效了)。
B.
用
prctl
来进行参数的调整
与
Project
方式不同,
prctl
是一个动态设置系统资源的方式。只有在当前的系统生效,在系统重新启动后这些设置将会丢失。下面用一个实际的例子来看一下怎么用
prctl
来设置和查看设定的值。
B
.
1
查看已经设定好的值
有两种方式,分别如下
(
例如要查看
max-shm-memory)
先到
oracle
用户(
su - oracle
):
提示:
用
#prctl $$
命令可以查看所有的设置。
#prctl –n project.max-shm-memory $$
#prctl –n project.max-shm-memory –i project user.oracle
B
.
2
修改已经设定好的值
下面试着用
prctl
来修改一下
project.max-shm-memory的值变为
6G
,
首先开两个终端窗口,第一个窗口下进入到
oracle
用户下,第二个窗口需要到
root
方式下(因为权限限制)。之后在第二个窗口中执行
#prctl –n project.max-shm-memory –r –v 6.00G –i project user.oracle
在第一个窗口中用
B.1
中提供的方法查看发现当前的
project.max-shm-memory
值确实已经变成了
6G
了。
在此窗口中用
#more /etc/project
查看发现此文件中
project.max-shm-memory
值仍然是
4G
。还是在第一个窗口中先用
#exit
(如果进入了
bash
,那么还要一次
exit
)命令返回到
root
,之后再用
su – oracle
进入到
oracle
用户,使用同样的方法检查发现用
prctl
设置的新值已经丢失了。
Prctl
命令还可以创建和删除一个系统资源设置属性。更多
prctl
命令的使用方法请使用
#man prctl
进行查看。
三、
参考资料: