文档介绍:Oracle下Linux参数设置介绍
唐成-
汇报提纲
内核参数介绍
信号量设置
共享内存的设置
大页的设置
oracle所需的内核参数设置
对于orale10g:
# SEMMSL SEMMNS SEMOPM SEMMNI
=2010 257280 2010 . = . = . = . = .=1024 65000
-max=65536
=4294967296
=16777216
Linux下的IPC信号量设置
# SEMMSL SEMMNS SEMOPM SEMMNI
=2010 257280 2010 128
SEMMSL 内核参数用于控制每个信号集合的最大信号数
SEMMNS 内核参数用于控制系统范围内能使用了最大信号量数。
SEMOPM 每个semop调用所能操作的信号操作结构数组的最大大小
SEMMNI 内核参数用于控制整个系统中信号集的最大数量
要理解上面的意思,需要了解信号量的概念。
什么是System V 的semaphore?
Oracle使用的信号量是System V的IPC机制信号量,而不是Linux信号量,
System V 的IPC中的semaphore主要由下面这几个系统调用组成:
semget() semop() semctl()
而Linux的信号量是指以下这几个函数:
sem_init:初始化信号量sem_t,初始化的时候可以指定信号量的
初始值,以及是否可以在多进程间共享。
sem_wait:一直阻塞等待直到信号量>0。
sem_timedwait:阻塞等待若干时间直到信号量>0。
sem_post:使信号量加1。
sem_destroy:释放信号量。和sem_init对应。
但这几个函数在旧版本的Linux中只能做线程之间的同步,不支持进
程之间的同步。
什么是System V 的semaphore?
查看System V IPC的命令是ipcs;
手工删除ipc的命令是ipcrm;
创建ipc资源的命令是ipcmk;
******@osdba-laptop:~$ ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0xd1cef574 5242893 oracle 640 143409152 40
------ Semaphore Arrays --------
key semid owner perms nsems
0xb3be8f54 98304 oracle 640 126
0xb3be8f55 131073 oracle 640 126
0xb3be8f56 163842 oracle 640 126
0xb3be8f57 196611 oracle 640 126
0xb3be8f58 229380 oracle 640 126
------ Message Queues --------
key msqid owner perms used-bytes messages
多个实例,如何查看当前实例的IPC?
******@osdba-laptop:/opt/oracle/products/$ sysresv
IPC Resources for ORACLE_SID "oratest" :
Shared Memory:
ID KEY
5242893 0xd1cef574
Semaphores:
ID KEY
98304 0xb3be8f54
131073 0xb3be8f55
163842 0xb3be8f56
196611 0xb3be8f57
229380 0xb3be8f58
Oracle Instance alive for sid "oratest"
System V semaphore中的概念
System V的IPC的信号量中的概念:
信号量集:每个信号量集都在整个系统范围内生成一个唯一的编号,
这个编号也就是在ipcs命令中看到的信号量的键值。每个信号量集
可以包括很多信号量。
每个信号量被oracle用做保护oracle的资源的锁。
Linux下的IPC信号量设置
# SEMMSL SEMMNS SEMOPM SEMMNI
=2010 257280