怎么维护ORACLE在各操作系统信号量与共享内存

67次阅读
没有评论

共计 2609 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章主要讲解了“怎么维护 ORACLE 在各操作系统信号量与共享内存”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“怎么维护 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 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 startup

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

这个时就可能需要清理相关的信号量(也可以增加信号量值)

感谢各位的阅读,以上就是“怎么维护 ORACLE 在各操作系统信号量与共享内存”的内容了,经过本文的学习后,相信大家对怎么维护 ORACLE 在各操作系统信号量与共享内存这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计2609字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)