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

简介:

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

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

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

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

-m列出共享内存

-s列出共享信号量

-q列出共享队列

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

-m 删除共享内存

-s删除共享信号量

-q删除共享队列

 

案例分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[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

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

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

1
2
3
4
5
命令示例:
ipcs -a或ipc 显示当前系统中共享内存段、信号量集、消息队列的使用情况;
ipcs -m 显示共享内存段的使用情况;
ipcs -s 显示信号量集的使用情况;
ipcs -q 显示消息队列的使用情况;

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

1
2
3
4
5
6
7
8
9
命令示例:
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  in  echo `ipcs|grep 用户名|cut -d " "  -f2`; do ipcrm -s $i; done


更深入的了解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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

 wKiom1SqUtPQwytOAAJHLPBC0iA930.jpg











本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1599364,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
Oracle 关系型数据库 数据库
9-4 Oracle管理表空间和数据文件
9-4 Oracle管理表空间和数据文件
|
7月前
|
SQL 监控 Oracle
Oracle创建和管理表空间
Oracle创建和管理表空间
60 1
|
5天前
|
存储 NoSQL Oracle
Oracle 12c的内存列存储:数据的“闪电侠”
【4月更文挑战第19天】Oracle 12c的内存列存储以超高速度革新数据处理,结合列存储与内存技术,实现快速查询与压缩。它支持向量化查询和并行处理,提升效率,但需合理配置以平衡系统资源。作为数据管理员,应善用此功能,适应业务需求和技术发展。
|
1月前
|
存储 Oracle 关系型数据库
Oracle系列之七:表的创建与管理
Oracle系列之七:表的创建与管理
|
4月前
|
运维 Oracle 关系型数据库
医院检验科LIS系统源码,oracle数据库、报告管理、质控管理
医院检验科LIS系统源码,oracle数据库、报告管理、质控管理
57 0
|
6月前
|
存储 Oracle 关系型数据库
9-6 Oracle 管理索引
9-6 Oracle 管理索引
|
8月前
|
缓存 Oracle 关系型数据库
使用序列(Sequence)在 Oracle 数据库中管理唯一标识符
使用序列(Sequence)在 Oracle 数据库中管理唯一标识符
108 0
|
10月前
|
Oracle 关系型数据库
oracle修改内存
oracle修改内存
93 0
|
11月前
|
Oracle 安全 关系型数据库
Linux的daemon进程对Oracle数据库的SGA使用大页内存的处理
Oracle对运行在机器内存超过32G上的数据库推荐使用HugePages 来容纳Oracle数据库的SGA,参见。
140 0
|
存储 SQL Oracle
Oracle 用户、角色管理简介
Oracle 用户、角色管理简介
103 0

推荐镜像

更多