ipcs、ipcrm、sysresv、kernel.shmmax

ipcs、ipcrm、sysresv、kernel.shmmax

1.1  BLOG文档结构图

1.2  前言部分

1.2.1  导读和注意事项

各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~:

ipcs的使用

② ipcrm释放oracle内存段

③ sysresv的使用

④ 内核参数kernel.shmmax

⑤ 如何快速的清理Oracle的进程

⑥ 其它维护操作

 

Tips:

① 本文在itpub(http://blog.itpub.net/26736162)、博客园(http://www.cnblogs.com/lhrbest)和微信公众号(xiaomaimiaolhr)上有同步更新。

② 文章中用到的所有代码、相关软件、相关资料及本文的pdf版本都请前往小麦苗的云盘下载,小麦苗的云盘地址见:http://blog.itpub.net/26736162/viewspace-1624453/

③ 若网页文章代码格式有错乱,请下载pdf格式的文档来阅读。

④ 在本篇BLOG中,代码输出部分一般放在一行一列的表格中。

⑤ 本文适合于初中级人员阅读,数据库大师请略过本文。

⑥ 不喜勿喷。

本文有错误或不完善的地方请大家多多指正,您的批评指正是我写作的最大动力。

1.3  本文简介

最近有朋友因为kernel.shmmax内核参数的问题导致数据库不能启动。小麦苗之前碰到过一次,只是没有记录下来,而且以前安装数据库的时候也没有详细介绍这几个参数的含义,趁这次机会就把这个参数在详细介绍一下吧。

1.4  相关文章链接

① 【故障解决】IPCS和IPCRM使用:http://blog.itpub.net/26736162/viewspace-2112518

② ORACLE内核参数:http://blog.itpub.net/26736162/viewspace-2112447/

③ sysresv:http://blog.itpub.net/26736162/viewspace-2112443/

④ 视频讲解IPCS和IPCRM使用:http://www.iqiyi.com/w_19rs33qqsp.html

⑤ 有关“TNS-12518: TNS:listener could not hand off client connection”的更多内容请参考:【故障|监听】TNS-12518、TNS-00517和 Linux Error:32:Broken pipe:http://blog.itpub.net/26736162/viewspace-2135468/

第二章 ipcs/ipcrm命令

更多内容请参考:http://blog.itpub.net/26736162/viewspace-2112518

unix/linux下的共享内存、信号量、队列信息管理

在Unix或Linux下,经常有因为共享内存、信号量,队列等共享信息没有干净地清除而引起一些问题。

查看共享内存的命令是:ipcs [-m|-s|-q]。若ipcs命令不带参数,则默认会列出共享内存、信号量,队列信息,而-m列出共享内存,-s列出共享信号量,-q列出共享队列。

清除命令是:ipcrm [-m|-s|-q] id,其中,-m删除共享内存,-s删除共享信号量,-q删除共享队列。


[[email protected] ~]$ ipcs -h

ipcs provides information on ipc facilities for which you have read access.

Resource Specification:

-m : shared_mem

-q : messages

-s : semaphores

-a : all (default)

Output Format:

-t : time

-p : pid

-c : creator

-l : limits

-u : summary

-i id [-s -q -m] : details on resource identified by id

usage : ipcs -asmq -tclup

ipcs [-s -m -q] -i id

ipcs -h for help.

2.1  ipcs

1. 命令格式

ipcs [resource-option] [output-format]

ipcs [resource-option] -i id

2. 命令功能

提供IPC设备的信息

3. 使用方法

resource选项:

ipcs -m 查看系统共享内存信息

ipcs -q 查看系统消息队列信息

ipcs -s 查看系统信号量信息

ipcs [-a] 系统默认输出信息,显示系统内所有的IPC信息


[[email protected]host data]$ ipcs -a

------ Message Queues --------

key        msqid      owner      perms      used-bytes   messages

------ Shared Memory Segments --------

key        shmid      owner      perms      bytes      nattch     status

0x00000000 229376     martin     600        4194304    2          dest

0x00000000 196609     martin     600        524288     2          dest

0x00000000 327682     martin     600        393216     2          dest

0x00000000 491525     martin     600        2097152    2          dest

------ Semaphore Arrays --------

key        semid      owner      perms      nsems

输出格式控制:

ipcs -c 查看IPC的创建者和所有者

ipcs -l 查看IPC资源的限制信息

ipcs -p 查看IPC资源的创建者和使用的进程ID

ipcs -t 查看最新调用IPC资源的详细时间

ipcs -u 查看IPC资源状态汇总信息


[[email protected] data]$ ipcs -u --human

------ Messages Status --------

allocated queues = 0

used headers = 0

used space = 0B

------ Shared Memory Status --------

segments allocated 4

pages allocated 1760

pages resident  339

pages swapped   0

Swap performance: 0 attempts     0 successes

------ Semaphore Status --------

used arrays = 0

allocated semaphores = 0

额外格式控制:

ipcs -l --human

以人类可以阅读的方式显示size


[[email protected] data]$ ipcs -l --human

------ Messages Limits --------

max queues system wide = 3644

max size of message = 8K

default max size of queue = 16K

------ Shared Memory Limits --------

max number of segments = 4096

max seg size = 16E

max total shared memory = 16E

min seg size = 1B

------ Semaphore Limits --------

max number of arrays = 128

max semaphores per array = 250

max semaphores system wide = 32000

max ops per semop call = 32

semaphore max value = 3276


[[email protected] ~]$ ipcs -l

------ Shared Memory Limits --------

max number of segments = 4096

max seg size (kbytes) = 98442

max total shared memory (kbytes) = 3221512

min seg size (bytes) = 1

------ Semaphore Limits --------

max number of arrays = 2048

max semaphores per array = 250

max semaphores system wide = 256000

max ops per semop call = 100

semaphore max value = 32767

------ Messages: Limits --------

max queues system wide = 7643

max size of message (bytes) = 65536

default max size of queue (bytes) = 65536

2.2  ipcrm

1. 命令功能

通过指定ID删除删除IPC资源,同时将与IPC对象关联的数据一并删除,只有超级用户或IPC资源创建者能够删除

2. 使用方法

ipcrm -M shmkey

移除用shmkey创建的共享内存段

ipcrm -m shmid

移除用shmid标识的共享内存段

ipcrm -S semkey

移除用semkey创建的信号量

ipcrm -s semid

移除用semid标识的信号量

ipcrm -Q msgkey

移除用msgkey创建的消息队列

ipcrm -q msgid

移除用msgid标识的消息队列

2.3  如何快速的清理Oracle的进程?

真题1、 如何快速的清理Oracle的进程?

答案:若想要快速清理掉Oracle的进程,则最直接的办法是杀pmon进程。有如下3条命令可供选择,其中加粗的orcl替换成ORACLE_SID的值即可。


kill -9 `ps -ef|grep orcl| grep -v grep | awk ‘{print $2}‘`

ps -ef |grep orcl|grep -v grep|awk ‘{print $2}‘ | xargs kill -9

ipcs -m | grep oracle | awk ‘{print $2}‘ | xargs ipcrm shm

若想要快速杀掉集群的进程,则可以执行如下命令:


kill -9 `ps -ef|grep d.bin| grep -v grep | awk ‘{print $2}‘`

注意,生产库上严禁使用,否则可能导致集群不能正常启动。

第三章 sysresv命令

3.1  若是一个主机上有多个oracle实例的话该如何确定哪个共享内存段属于我们该清掉的oracle实例的内存段

答案:使用sysresv命令。sysresv是Oracle在Linux/Unix平台提供的工具,用来查看Oracle实例使用的共享内存和信号量等信息。sysresv存放的路径:$ORACLE_HOME/bin/sysresv。使用时需要设置LD_LIBRARY_PATH环境变量,用来告诉Oracle共享库文件的位置。sysresv用法如下:


[[email protected] ~]$ sysresv -h

sysresv: invalid option -- ‘h‘

usage   : sysresv [-if] [-d] [-l sid1...]

-i : Prompt before removing ipc resources for each sid

-f : Remove ipc resources silently, oevrrides -i option

-d: List ipc resources for each sid if on

-l sid1.. : apply sysresv to each sid

Default : sysresv -d on -l $ORACLE_SID

Note    : ipc resources will be attempted to be deleted for a

sid only if there is no currently running instance

with that sid.

[[email protected] ~]$ which sysresv

/u01/app/oracle/product/11.2.0/dbhome_1/bin/sysresv

第四章 Oracle内核参数

查看:more /proc/sys/kernel/shmmax

临时生效:echo 3145728 > /proc/sys/kernel/shmmax

永久生效,修改文件:/etc/sysctl.conf,并使修改参数立即生效:/sbin/sysctl -p

重要的几个参数如下所示:


kernel.shmall = 2097152

kernel.shmmax = 1054472192

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

其含义分别如下所示:

(一)kernel.shmall = 2097152 # kernel.shmall参数是控制共享内存页数。Linux 共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。如果一个共享内存段的最大大小是16G,那么需要共享内存页数是 16GB/4KB = 16777216KB/4KB = 4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求(几乎是原来设置2097152的两倍)。简言之,该参数的值始终应该至少为: ceil(SHMMAX/PAGE_SIZE)。这个值太小有可能导致数据库启动报错(ORA-27102: out of memory)。

(二)kernel.shmmax = 1054472192  #定义一个内存段最大可以分配的内存空间,单位为字节。如果定义太小,那么会导致启动实例失败,或者SGA就会被分配到多个共享内存段。那么内存中的指针连接会给系统带来一定的开销,从而降低系统性能。这个值的设置应该大于SGA_MAX_TARGET或MEMORY_MAX_TARGET的值,最大值可以设置成大于或等于实际的物理内存。如果kernel.shmmax为100M,sga_max_size为500M,那么启动Oracle实例至少会分配5个共享内存段;如果设置kernel.shmmax为2G,sga_max_size为500M,那么启动Oracle实例只需要分配1个共享内存段。

(三)kernel.shmmni = 4096 #设置系统级最大共享内存段数量,该参数的默认值是4096。这一数值已经足够,通常不需要更改。。

(四)kernel.sem = 250 32000 100 128 #信号灯的相关配置,信号灯semaphores是进程或线程间访问共享内存时提供同步的计数器。可以通过命令“cat /proc/sys/kernel/sem”来查看当前信号灯的参数配置,如下所示:


[[email protected] ~]# cat /proc/sys/kernel/sem

250     32000   100     128

其4个值的含义分别如下:

① 250表示SEMMSL,设置每个信号灯组中信号灯最大数量,推荐的最小值是250。对于系统中存在大量并发连接的系统,推荐将这个值设置为PROCESSES初始化参数加10。

② 32000表示SEMMNS,设置系统中信号灯的最大数量。操作系统在分配信号灯时不会超过LEAST(SEMMNS,SEMMSL*SEMMNI)。事实上,如果SEMMNS的值超过了SEMMSL*SEMMNI是非法的,因此推荐SEMMNS的值就设置为SEMMSL*SEMMNI。Oracle推荐SEMMNS的设置不小于32000。

③ 100表示SEMOPM,设置每次系统调用可以同时执行的最大信号灯操作的数量。由于一个信号灯组最多拥有SEMMSL个信号灯,因此有推荐将SEMOPM设置为SEMMSL的值。Oracle验证的10.2和11.1的SEMOPM的配置为100。

④ 128表示SEMMNI,设置系统中信号灯组的最大数量。Oracle10g和11g的推荐值为142。

-------------------------------------------------------------------------



About Me


.............................................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、博客园(http://www.cnblogs.com/lhrbest)和个人微信公众号(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/viewspace-2147273/

● 本文博客园地址:http://www.cnblogs.com/lhrbest/p/7838547.html

● 本文pdf版、个人简介及小麦苗云盘地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

.............................................................................................................................................

● QQ群号:230161599(满)、618766405

● 微信群:可加我微信,我拉大家进群,非诚勿扰

● 联系我请加QQ好友(646634621),注明添加缘由

● 于 2017-11-01 09:00 ~ 2017-11-30 22:00 在魔都完成

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

.............................................................................................................................................

● 小麦苗的微店:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

● 小麦苗出版的数据库类丛书:http://blog.itpub.net/26736162/viewspace-2142121/

.............................................................................................................................................

使用微信客户端扫描下面的二维码来关注小麦苗的微信公众号(xiaomaimiaolhr)及QQ群(DBA宝典),学习最实用的数据库技术。

小麦苗的微信公众号      小麦苗的DBA宝典QQ群2     《DBA笔试面宝典》读者群       小麦苗的微店

.............................................................................................................................................

时间: 2024-10-08 10:29:05

ipcs、ipcrm、sysresv、kernel.shmmax的相关文章

ipcs、ipcrm命令

进程间通信概述进程间通信有如下的目的:1.数据传输,一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M之间:2.共享数据,多个进程想要操作共享数据,一个进程对数据的修改,其他进程应该立刻看到:3.通知事件,一个进程需要向另一个或一组进程发送消息,通知它们发生了某件事情:4.资源共享,多个进程之间共享同样的资源.为了做到这一点,需要内核提供锁和同步机制:5.进程控制,有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能

CentOS启动流程、Grub legacy配置、linux kernel模块管理、伪文件系统介绍

写在前面: 博客书写牢记5W1H法则:What,Why,When,Where,Who,How. 本篇主要内容: ● 启动相关基础概念汇总 ● 启动流程 ● init程序类型     /etc/rc.d/rc     chkconfig     /etc/rc.d/rc.sysinit ● GRUB legacy     命令行接口     配置文件 ● Linux Kernel     内核模块查看与管理         lsmod         modinfo         modprob

[kernel]字符设备驱动、平台设备驱动、设备驱动模型、sysfs几者之间的比较和关联

转自:http://www.2cto.com/kf/201510/444943.html Linux驱动开发经验总结,绝对干货! 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sysfs等相关概念和技术.对于初学者来说会非常困惑,甚至对Linux有一定基础的工程师而言,能够较好理解这些相关技术也相对不错了.要深刻理解其中的原理需要非常熟悉设备驱动相关的框架和模型代码.网络上有关这些技术的文章不少,但多是对其中的某一点进行阐述,很难找到对这些技术进行比较和关

linux启动流程详解、破解root密码、添加服务脚本

1.Linux的组成 kernel+rootfs kernel:进程管理.内存管理.网络管理.安全管理.文件系统管理.驱动程序 rootfs:程序和glibc 库:函数集合,function,调用接口(头文件负责描述) 过程调用:procedure  ,无返回值 结果调用:function 程序:二进制文件 2.内核设计流派 单内核(monolithic kernel):Linux 把所有功能集成于同一个程序 微内核(micro kernel):Windows, Solaris 每种功能使用一个

Linux系统简介 、 安装Linux系统 、 RHEL6基本操作

Linux系统简介 安装Linux操作系统 RHEL6基本操作 ################################################# 一.Linux系统简介 1. Linux是一类操作系统 计算机系统=硬件+软件 |--> 软件包括:操作系统.各种应用 Linux操作系统=内核程序+外围程序 2. 常见的三大类操作系统 Unix系列      --> 1970年01月01日诞生,FreeBSD.贝尔实验室.IBM.惠普.Oracle等公司 Windows系列   

Debian 7.x 安装教程、网络配置、软件源配置、磁盘分区、LVM、U盘安装、网络安装

目录 一.准备安装Debian系统      1.1Debian简介          1.1.1介绍Debian版本          1.1.2Debian的正式发音          1.1.3Debian软件包管理          1.1.4Debian分支          1.1.5官方网站与文档          1.1.6介绍  Debian 7.1  1.2获得Debian发行版          1.2.1从镜像站点上下载ISO的镜像文件          1.2.2将IS

【安全牛学习笔记】 安装Java、安装显卡驱动、安装网卡补丁、并发线程限制、电源优化.txt

下载 http://java.sun.com/javase/downloads/index.jsp 解包拷贝 tar-xzvf /root/jdk-7u45-linux-x64.tar.gz mv jdk1.7.0_45/opt cd/opt/jdk1.7.0_45 安装注册 update-alternatives --install /usr/bin/java java/opt/jdk1.7.0_45/bin/java 1 update-alternatives --install /usr/

scikit-learn:4. 数据集预处理(clean数据、reduce降维、expand增维、generate特征提取)

本文參考:http://scikit-learn.org/stable/data_transforms.html 本篇主要讲数据预处理,包含四部分: 数据清洗.数据降维(PCA类).数据增维(Kernel类).提取自己定义特征. 哇哈哈.还是关注预处理比較靠谱. .. . 重要的不翻译:scikit-learn providesa library of transformers, which mayclean (see Preprocessing data), reduce (seeUnsupe

scikit-learn:数据集预处理(clean数据、reduce降维、expand增维、generate特征提取)

本文参考:http://scikit-learn.org/stable/data_transforms.html 本篇主要讲数据预处理,包括四部分: 数据清洗.数据降维(PCA类).数据增维(Kernel类).提取自定义特征.哇哈哈,还是关注预处理比较靠谱.... 重要的不翻译:scikit-learn provides a library of transformers, which may clean (see Preprocessing data), reduce (seeUnsuperv