本文描述了sun solaris上运行oracle数据库所需要设置的一些内核参数。
一些预备知识
shared memory:共享内存段:
一个内存区域,可以被不同的进程读取。oracle使用它来构成sga。oracle使用以下三种方法来创建一个sga区:
1.使用单个共享内存段。
2.使用连续多个共享内存段。
3.使用多个不连续共享内存段。
oracle优先使用的第一种方法,如果成功,则继续初始化,不成功则使用第二种方法,再不成功则使用第三种方法。如果再不成功,则初始化失败,oracle报告错误代码。
semaphore:(信号量)
可以看作一个标记。可以有on和off两种状态。oracle使用semaphores来实现服务器进程对sga区的存取控制。
shared memory 和semaphore 是oracle在unix上运行的重要资源。如果oracle 实例得不到所需要的资源,实例启动就会失败。
参数:
对于运行一个oracle实例的solaris系统,改变/etc/system文件中的一些关于共享内存的参数,以使oracle实例可以正常运行。如果有多个实例的话,还需根据下面方法重新计算某些值。
共享内存:
shmmax
含义:这个设置并不决定究竟oracle数据库或者操作系统使用多少物理内存,只决定了最多可以使用的内存数目。这个设置也不影响操作系统的内核资源。max shared memory segment size (shmmax) bytes
设置方法:0.5*物理内存
例子:set shmsys:shminfo_shmmax=10485760
shmmin
含义:共享内存的最小大小。
设置方法:一般都设置成为1。
例子:set shmsys:shminfo_shmmin=1:
shmmni
含义:系统中共享内存段的最大个数。
例子:set shmsys:shminfo_shmmni=100
shmseg
含义:每个用户进程可以使用的最多的共享内存段的数目。
例子:set shmsys:shminfo_shmseg=20:
信号量:
semmni
含义:系统范围内设置信号量集的最大数目. unix将信号量分配到个信号量集.分配的信号量数目的范围为1到semmsl参数所设置的值.
设置方法:固定
例子:set semsys:seminfo_semmni=100
semmsl:
含义:一个set中semaphore的最大个数。系统范围内信号量集中信号量的数目.
设置方法:设置成为10+所有oracle实例的initsid.ora中最大的processes的值。
例子:set semsys:seminfo_semmsl=200
semmns
含义:系统中semaphores的最大个数。
设置方法:这个值可以通过以下方式计算得到:各个oracle实例的initsid.ora里边的processes的值的总和(除去最大的processes参数)+最大的那个processes×2+10×oracle实例的个数。
例子:set semsys:seminfo_semmns=200
semopm
set semsys:seminfo_semopm=100
semvmx
set semsys:seminfo_semvmx=32767
改变了/etc/system里边以上参数以后,重新启动计算机:
$reboot
然后检查当前的参数:
$sysdef -i
如果系统参数仍旧没有改变得话,使用以下命令:
$modload /kernel/sys/shmsys。"
新闻热点
疑难解答