在Solaris10中为Oracle配置系统资源的方法
在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_msgtql
|
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
|
224
|
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进行查看。
三、 参考资料:
System Administration Guide: Solaris Containers-Resource Management and Solaris Zones
Solaris Tunable Parameters
本文地址:http://www.45fan.com/dnjc/69948.html