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

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

 

shmmax    

  • OS的内核参数,即单个共享内存段的最大值,若shmmax值

 

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 2424832START       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 2424832128 2457601128 2490370128 2523139114 2555908

 

常见问题:

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

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

 



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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部