Oracle Study之--IPCS管理共享内存

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

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

查看共享信息的内存的命令是:ipcs [-m|-s|-q]。

默认会列出共享内存、信号量,队列信息

-m列出共享内存

-s列出共享信号量

-q列出共享队列

清除命令是:ipcrm [-m|-s|-q] id。

-m删除共享内存

-s删除共享信号量

-q删除共享队列。

案例分析:[oracle@trade_as02 ~]$ ipcs -a

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

key        shmid      owner      perms      bytes      nattch     status

0x30024289 32768      futures   777        528384     1

0xca2fd414 491521     oracle    640        1730150400 16

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

key        semid      owner      perms      nsems

0x00028009 0          futures   666        1

0x0002800c 32769      futures   666        1

0x30024003 262146     futures   777        3

0x3002428a 294915     futures   777        2

0x3002428b 327684     futures   777        2

0x3002428c 360453     futures   777        2

0x3002428d 393222     futures   777        2

0x3002428e 425991     futures   777        2

0x52dff7d0 3964936    oracle    640        151

0x52dff7d1 3997705    oracle    640        151

0x52dff7d2 4030474    oracle    640        151

0x52dff7d3 4063243    oracle    640        151

0x52dff7d4 4096012    oracle    640        151

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

key        msqid      owner      perms      used-bytes   messages

共享内存段有时不能马上删除,需使用这个内存段的所有进程向OS发送detach命令时才有释放,此时可以考虑删除进程使用的信号量,帮助释放共享内存段

相关知识:信号量、资源释放、ipcs、ipcrm

信号量又称为信号灯,它是用来协调不同间的数据对象的,而最主要的应用是共享内存方式的间通信。本质上,信号量是一个计数器,它用来记录对某个资源(如共享内存)的存取状况;共享内存是运行在同一台机器上的间通信最快的方式,因为数据不需要在不同的间复制。通常由一个创建一块共享内存区,其余对这块内存区进行读写。在系统下,常用的方式是通过shmXXX函数族来实现利用共享内存进行存储的。如Shmget,类似于 malloc函数

ipcs可用来显示当前Linux系统中的共享内存段、信号量集、消息队列等的使用情况。命令示例:

ipcs -a或ipc 显示当前系统中共享内存段、信号量集、消息队列的使用情况;

ipcs -m 显示共享内存段的使用情况;

ipcs -s 显示信号量集的使用情况;

ipcs -q 显示消息队列的使用情况;

ipcrm可用来删除对应的共享内存段、信号量、消息队列;命令示例:

ipcrm -s semid 删除对应的信号量集

ipcrm -m shmid 删除对应的共享内存段

ipcrm -q msqid 删除对应的消息队列

ipcrm本身只能实现单个资源的删除,利用以下命令可实现批量删除:

1.ipcs -s|grep 用户名|cut -d" " -f2|xargs -n1 ipcrm -s

2.ipcs -s|awk '/用户名/{print $2}'|xargs -n1 ipcrm -s

3.ipcs -s|awk '/用户名/{system("ipcrm -s "$2)}'

4.for i in echo `ipcs|grep 用户名|cut -d" " -f2`; do ipcrm -s $i; done

更深入的了解:Oracle 内存段参数设定:

[root@rh6 ~]# sysctl -p

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key

error: "net.bridge.bridge-nf-call-iptables" is an unknown key

error: "net.bridge.bridge-nf-call-arptables" is an unknown key

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 536870912

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586

oracle ipcs mt,Oracle Study之--IPCS管理共享内存相关推荐

  1. oracle12 共享内存不存在,DBA警世录:Oracle的共享内存段

    DBA警世录:Oracle的共享内存段 最近看到ITPUB上有这样一个帖子,觉得有点意思,收录一下,以为借鉴. 这位朋友的Apache和Oracle运行在同一台主机上:平台是redhat as 3 , ...

  2. linux共享内存原IPCS,共享内存相关(ipcs/ipcrm)

    在Linux进程通信中,共享内存的应用是比较普遍,把自己学习过的资料作一个小结吧! 共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区.在/proc/sys/kernel/目录下,记录着共 ...

  3. oracle报错oracle not available原因及解决办法

    出现ORA-01034和ORA-27101的原因是多方面的:主要是oracle当前的服务不可用,shared memory realm does not exist,是因为oracle没有启动或没有正 ...

  4. shmget创建共享内存errno - ipcs - From

    Thanks to: https://blog.csdn.net/libaineu2004/article/details/76919711 今天编写的程序,要使用一个共享内存,共享内存是由别的进程创 ...

  5. linux共享内存原IPCS,linux调试工具ipcs的深入分析

    用ipcs调试共享内存 测试源程序如下: #include #include #include #include #include #include #include void error_out(c ...

  6. oracle ipcs mt,ipcs命令以及oracle内存段

    今天是2014-01-06,在没过春节之前重新复习一下2013年学习的内容,关于oracle内存段在我之前写的blog中有详细操作.在此记录一下ipcs命令的用法. https://blog.csdn ...

  7. 在Oracle 11g中用看Oracle的共享内存段---------IPCS

    很早之前,在一次讲课了,用了命令ipcs,发现oracle的共享内段好小,如下: oracle@mydb ~]$ ipcs -a------ Shared Memory Segments ------ ...

  8. 如何查询oracle的共享内存,[20190104]ipcs查看共享内存段.txt

    [20190104]ipcs查看共享内存段.txt --//数据库启动异常,有时候会留下一些共享内存段没有清理,需要使用ipcrm清理. --//由于服务器上跑2个实例,必须选择正确的共享内存段,否则 ...

  9. oracle约束 关闭,Oracle约束管理脚本

    正在看的ORACLE教程是:Oracle约束管理脚本. 作为一个Oracle数据库管理员,会碰到这样的数据库管理需求,停止或者打开当前用户(模式)下所有表的约束条件和触发器.这在数据库的合并以及对数据 ...

最新文章

  1. 智能合约遇到的三个大坑
  2. PROC系列之/proc/stat/
  3. 如何在黄瓜中进行后端测试
  4. 主窗体的常用属性 c# 1615011872
  5. kesioncms ajax分页,改进KesionCMS V9.0x SQL标签分页支持嵌套
  6. @Valid注解详解
  7. 面试官问你JavaScript,直接把这篇文章甩给他
  8. Yii2 Lesson - 03 Forms in Yii
  9. 2016西安教师职称计算机考试,2016教师职称计算机考试模块.doc
  10. linux 平台下 MATLAB 打不开图形界面
  11. Neo4j Server shutdown initiated by request.解决方案
  12. 实时换脸技术——直播,视频通话|脸部交换程序
  13. 点击密码框显示密码(点击密码框小眼睛可显示输入密码)
  14. Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans,....
  15. ffmpeg剪切视频的python小脚本
  16. ARM-(一)定时器:PWM定时器,看门狗WTD定时器
  17. 楚留香手游系统互通的服务器,楚留香手游帮派系统互通介绍
  18. 模拟一个类似LinkedList的集合
  19. 知乎用户群分析--又双叒叕一只爬虫爬了知乎20万用户
  20. 【ViewPager的学习】一、简单使用

热门文章

  1. uni.app小程序的ajax封装详细讲解
  2. GO注释(生信学习)
  3. 【机器学习】——学习的基本分类:算法模拟的根本出发点!
  4. 百练(4124)::海贼王之伟大航路(状态压缩)
  5. 常用的几款富文本编辑器
  6. python毫秒级延时
  7. mumu安装xposed
  8. Javascript实现简单焦点图
  9. Linux下 prctl 进程控制
  10. 软件测试类型包括哪些?