SGA与共享内存段(OS内核参数shmmax)

SGA与共享内存段(OS内核参数shmmax)

 

shmmax    

  • OS的内核参数,即单个共享内存段的最大值,若shmmax值<SGA设置,将被分配多个共享内存段

 

shmmax的配置

  • solaris系统 /etc/system文件
  • linux系统 /proc/sys/kernel/shmmax文件

 

举例查看某共享内存段的内存地址和大小

 

方法一:

查看共享内存段数量,并找到shmid(共享内存ID)

oracle@linux:~> ipcs -sa    
------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x00000000 2424832    oracle    660        4096       0                      
0x00000000 2457601    oracle    660        4096       0                       
0x00000000 2490370    oracle    660        4096       0                       
0x00000000 2523139    oracle    660        4096       0                       
0xf03d9fe8 2555908    oracle    660        4096       0                      

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x002fa327 0          root      666        2         
0x9f2adfa8 2490369    oracle    660        152       
0x9f2adfa9 2523138    oracle    660        152       
0x9f2adfaa 2555907    oracle    660        152      

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages   

查找某进程的pid

oracle@linux:~> ps -ef|grep dbw
oracle    1143 13592  0 08:50 pts/0    00:00:00 grep dbw
oracle   17835     1  0 Feb19 ?        00:00:14 ora_dbw0_ora11g       

 

oracle@linux:~> pmap 17835 | grep 2424832

START       SIZE     RSS   DIRTY  PERM MAPPING
60000000      4K      0K      0K r-xs /dev/shm/ora_ora11g_2424832_0
60001000  16380K    264K    120K rwxs /dev/shm/ora_ora11g_2424832_0
61000000  16384K      0K      0K rwxs /dev/shm/ora_ora11g_2424832_1
62000000  16384K   5104K   5016K rwxs /dev/shm/ora_ora11g_2424832_2

START 进程起始地址

SIZE 进程占用的地址空间

RSS 保留内存的字节数

DIRTY 脏页的字节数(共享和私有)

 

方法二:

oracle@linux:~> more /proc/17835/maps | grep 2424832
60000000-60001000 r-xs 00000000 00:11 6635213                            /dev/shm/ora_ora11g_2424832_0
60001000-61000000 rwxs 00001000 00:11 6635213                            /dev/shm/ora_ora11g_2424832_0
61000000-62000000 rwxs 00000000 00:11 6635214                            /dev/shm/ora_ora11g_2424832_1
62000000-63000000 rwxs 00000000 00:11 6635215                            /dev/shm/ora_ora11g_2424832_2

其中第一列表示内存地址范围

可以查看oracle的几个共享内存段的总体使用情况:

oracle@linux:~> ipcs -sa

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x00000000 2424832    oracle    660        4096       0                       
0x00000000 2457601    oracle    660        4096       0                       
0x00000000 2490370    oracle    660        4096       0                       
0x00000000 2523139    oracle    660        4096       0                       
0xf03d9fe8 2555908    oracle    660        4096       0                      

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x002fa327 0          root      666        2         
0x9f2adfa8 2490369    oracle    660        152       
0x9f2adfa9 2523138    oracle    660        152       
0x9f2adfaa 2555907    oracle    660        152      

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages   

统计出每个共享内存段使用次数 

oracle@linux:~> pmap 17804  | grep ora_ | awk '{print $6}' | awk -F / '{print $4}' | awk -F _ '{print $3}' | uniq -c       //统计出每个共享内存段使用次数
      4 2424832
    128 2457601
    128 2490370
    128 2523139
    114 2555908

 

常见问题:

1、配置的SGA过大超过物理内存,导致共享内存段无法分配,修正参数;

2、ORACLE异常关闭导致共享内存没有释放,ipcs命令先找到共享内存ID,再ipcrm命令强制释放

 



转载来源:https://blog.csdn.net/ZWWDLL/article/details/20444095 
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值