ORACLE在各操作系统信号量与共享内存的维护
来源:互联网 发布:高程数据和影像 编辑:程序博客网 时间:2024/06/04 18:56
ORACLE在各操作系统信号量与共享内存的维护
----------
信号量与共享内存设置
----------
1.LIUNX
cat /etc/sysctl.conf
共享内存:
kernel.shmall = 2097152 # 可以使用的共享内存的总量,单位:页。 取值:推荐大于shmmax/page_size(getconf PAGE_SIZE 一般4096)
kernel.shmmax = 2147483648 # 最大单个共享内存段大小。 取值:推荐大于sag_max_size
kernel.shmmni = 4096 # 整个系统共享内存段的最大数目。 取值:默认值
信号量:
kernel.sem = 5010 641280 5010 128 #SEMMSL, SEMMNS, SEMOPM, SEMMNI
每个信号对象集的最大信号对象数;系统范围内最大信号对象数;每个信号对象支持的最大操作数;系统范围内最大信号对象集数。
SEMMSL
设置:最小250;对于processes参数设置较大的系统建议设置为processes+10
SEMMNS
设置:至少32000;SEMMSL * SEMMNI
SEMOPM
设置:至少100;或者等于SEMMSL
SEMMNI
含义:linux系统信号量set最大个数
设置:最少128
2.HPUX
信号量:
kctune -h -B semmni="4096" 全系统的最大信号量 Default: nproc(全系统进程的最大数)
kctune -h -B semmns="16384" 全系统内,用户可访问的最大信号量 Default: semmni*2
kctune -h -B semmnu="4092" 每个信号量的最大数 Maximum: nproc-4
kctune -h -B semvmx="32767" 所允许的信号量值的最大数 Maximum: 65535
kctune -h -B shmem=1 启动/关闭共享内存 1(开启)
kctune -h -B shmmni="4096" 系统上的最大段
kctune -h -B shmseg="512" 每个进程的最大段 Maximum: shmmni
3.AIX
AIX一般不用手工调整,而是系统动态的,如果运行后报共享内存或信号量不足,将maxuproc单个用户允许的最大进程数 调大即可(用命令smitty system或chdev)。
$su – root
#chdev –l sys0 –a maxuproc=1000
4.Solaris
修改Solaris 9里/etc/system,参考值如下所示:
信号量:
set semsys:seminfo_semmni=20000 指定最大信号标识符数
set semsys:seminfo_semmsl=29000 指定每个信号标识符的最大 System V 信号数
set semsys:seminfo_semmns=30000 系统上的最大 System V 信号数。
set semsys:seminfo_semopm=31000 指定每个 semop 调用的最大 System V 信号操作数。
set semsys:seminfo_semmnu=32000 System V 信号系统支持的撤消结构总数。
set semsys:seminfo_semume=10 可以由任一进程使用的最大 System V 信号撤消结构数
set semsys:seminfo_semvmx=32767 可以设置的最大信号值
共享内存:
shmsys:shminfo_shmmni 对可以创建的共享内存段数设置的系统范围限制。
shmsys:shminfo_shmmax 可以创建的 System V 共享内存段的最大大小。
----------
信号量与共享内存管理
----------
1.ORACLE提供了sysresv工具管理共享内存以及信号量
$ sysresv -l "ORCL" 查看实例对应的信号量与共享内存
IPC Resources for ORACLE_SID "ORCL":
Shared Memory:
ID KEY
65537 0x3b751258
Semaphores:
ID KEY
98304 0xe21c75d0
Oracle Instance alive for sid "ORCL"
sysresv -f参数可以移除共享段(仅适用于实例不存在,操作系统共享段不释放条件)
$ export ORACLE_SID=orcl
$ sysresv -f orcl
2.操作系统级别可以通过ipcs/ipcrm管理(多实例下可以结合sysresv确定)
ipcs -a或ipcs 显示当前系统中共享内存段、信号量集、消息队列的使用情况;
ipcs -m 显示共享内存段的使用情况;
ipcs -s 显示信号量集的使用情况;
ipcs -q 显示消息队列的使用情况;
清理相关共享内存、信号量,队列等共享信息命令如下:
ipcrm -s semid 删除对应的信号量集
ipcrm -m shmid 删除对应的共享内存段
ipcrm -q msqid 删除对应的消息队列
3.经常有因为共享内存、信号量,队列等共享信息没有干净地清理而引起一些问题
ORA-27154: post/wait create failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpcreates
这个时就可能需要清理相关的信号量(也可以增加信号量值)
----------
信号量与共享内存设置
----------
1.LIUNX
cat /etc/sysctl.conf
共享内存:
kernel.shmall = 2097152 # 可以使用的共享内存的总量,单位:页。 取值:推荐大于shmmax/page_size(getconf PAGE_SIZE 一般4096)
kernel.shmmax = 2147483648 # 最大单个共享内存段大小。 取值:推荐大于sag_max_size
kernel.shmmni = 4096 # 整个系统共享内存段的最大数目。 取值:默认值
信号量:
kernel.sem = 5010 641280 5010 128 #SEMMSL, SEMMNS, SEMOPM, SEMMNI
每个信号对象集的最大信号对象数;系统范围内最大信号对象数;每个信号对象支持的最大操作数;系统范围内最大信号对象集数。
SEMMSL
设置:最小250;对于processes参数设置较大的系统建议设置为processes+10
SEMMNS
设置:至少32000;SEMMSL * SEMMNI
SEMOPM
设置:至少100;或者等于SEMMSL
SEMMNI
含义:linux系统信号量set最大个数
设置:最少128
2.HPUX
信号量:
kctune -h -B semmni="4096" 全系统的最大信号量 Default: nproc(全系统进程的最大数)
kctune -h -B semmns="16384" 全系统内,用户可访问的最大信号量 Default: semmni*2
kctune -h -B semmnu="4092" 每个信号量的最大数 Maximum: nproc-4
kctune -h -B semvmx="32767" 所允许的信号量值的最大数 Maximum: 65535
共享内存:
kctune -h -B shmmax="34359738368" 最大共享内存段大小kctune -h -B shmem=1 启动/关闭共享内存 1(开启)
kctune -h -B shmmni="4096" 系统上的最大段
kctune -h -B shmseg="512" 每个进程的最大段 Maximum: shmmni
3.AIX
AIX一般不用手工调整,而是系统动态的,如果运行后报共享内存或信号量不足,将maxuproc单个用户允许的最大进程数 调大即可(用命令smitty system或chdev)。
$su – root
#chdev –l sys0 –a maxuproc=1000
4.Solaris
修改Solaris 9里/etc/system,参考值如下所示:
信号量:
set semsys:seminfo_semmni=20000 指定最大信号标识符数
set semsys:seminfo_semmsl=29000 指定每个信号标识符的最大 System V 信号数
set semsys:seminfo_semmns=30000 系统上的最大 System V 信号数。
set semsys:seminfo_semopm=31000 指定每个 semop 调用的最大 System V 信号操作数。
set semsys:seminfo_semmnu=32000 System V 信号系统支持的撤消结构总数。
set semsys:seminfo_semume=10 可以由任一进程使用的最大 System V 信号撤消结构数
set semsys:seminfo_semvmx=32767 可以设置的最大信号值
共享内存:
shmsys:shminfo_shmmni 对可以创建的共享内存段数设置的系统范围限制。
shmsys:shminfo_shmmax 可以创建的 System V 共享内存段的最大大小。
----------
信号量与共享内存管理
----------
1.ORACLE提供了sysresv工具管理共享内存以及信号量
$ sysresv -l "ORCL" 查看实例对应的信号量与共享内存
IPC Resources for ORACLE_SID "ORCL":
Shared Memory:
ID KEY
65537 0x3b751258
Semaphores:
ID KEY
98304 0xe21c75d0
Oracle Instance alive for sid "ORCL"
sysresv -f参数可以移除共享段(仅适用于实例不存在,操作系统共享段不释放条件)
$ export ORACLE_SID=orcl
$ sysresv -f orcl
2.操作系统级别可以通过ipcs/ipcrm管理(多实例下可以结合sysresv确定)
ipcs -a或ipcs 显示当前系统中共享内存段、信号量集、消息队列的使用情况;
ipcs -m 显示共享内存段的使用情况;
ipcs -s 显示信号量集的使用情况;
ipcs -q 显示消息队列的使用情况;
清理相关共享内存、信号量,队列等共享信息命令如下:
ipcrm -s semid 删除对应的信号量集
ipcrm -m shmid 删除对应的共享内存段
ipcrm -q msqid 删除对应的消息队列
3.经常有因为共享内存、信号量,队列等共享信息没有干净地清理而引起一些问题
比如:
SQL> startupORA-27154: post/wait create failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpcreates
这个时就可能需要清理相关的信号量(也可以增加信号量值)
阅读全文
1 0
- ORACLE在各操作系统信号量与共享内存的维护
- 信号量 与共享内存
- linux共享内存与信号量的使用
- linux 进程间共享内存与信号量的使用
- 进程间通信 "共享内存" 与 “信号量”的使用
- 进程通信之共享内存与信号量
- 共享内存在winodws操作系统下的使用
- 共享内存在winodws操作系统下的使用
- 共享内存和信号量的使用
- 信号量和共享内存的配合使用
- 静态库与共享库的区别、进程、操作系统、内存
- Linux安装oracle时对共享内存段和信号量的系统内核参数调整
- 共享内存+信号量 实例
- 利用信号量共享内存
- 信号量,共享内存
- 共享内存和信号量
- 共享内存+信号量 实例
- 信号量和共享内存
- Activiti7.0 EL NullPoint问题
- element 表格和分页组件数据关联
- Leetcode之Intersection of Two Arrays 问题
- python numpy学习
- hadoop伪分布式环境的搭建
- ORACLE在各操作系统信号量与共享内存的维护
- Markdown空两格,图片居中
- python高级编程(二)--网络编程
- HDU 4267 A Simple Problem With Integers
- editor.md国产markdown编辑器踩过的坑
- Linux及常用工具配置
- 将字符串中的小写字母转换成大写字母
- Window和Linux系统下获取U盘UUID
- qemu中模拟设备的注册是在main函数之前