当前位置:数据库 > Oracle >>

IPC资源、kernel.shmmax和Oracle共享内存的调整

IPC资源、kernel.shmmax和Oracle共享内存的调整
 
     ㈠ IPC 资源查看与释放
[plain] 
[root@david ~]# ipcs -m  
  
------ Shared Memory Segments --------  
key        shmid      owner      perms      bytes      nattch     status                                                              
...  
...  
0xbe3bb918 5439503    oracle    640        419438592  22                        
  
[root@david ~]# ipcs -m -i 5439503  
  
Shared memory Segment shmid=5439503  
uid=501 gid=502 cuid=501        cgid=502  
mode=0640       access_perms=0640  
bytes=419438592 lpid=5335       cpid=5283       nattch=21  
att_time=Sat Jun 29 18:50:06 2013    
det_time=Sat Jun 29 18:51:07 2013    
change_time=Sat Jun 29 18:49:33 2013    
  
注释:  
  
cuid:创建这个共享内存的用户ID  
cgid:创建这个共享内存的组ID  
lpid:最后一次访问这个共享内存的PID  
nattch: 连接到共享内存段的进程数  
att_time:最后一次调用shmat()的时间  
det_time:最后一次调用shmdt()的时间 [shmdt函数释放共享内存]  
change_time:最后一次用shmctl()修改共享内存段的时间 [shmctl删除共享内存]  
  
  
[root@david ~]# ipcrm -m 5439503  
[root@david ~]# ipcs -m  
  
------ Shared Memory Segments --------  
key        shmid      owner      perms      bytes      nattch     status        
...                        
...             
0x00000000 5439503    oracle    640        419438592  20         dest       
  
此时 status 变成 dest、而key变成 0x00000000  
  
  
[root@david ~]# ipcs -m -i 5439503  
  
Shared memory Segment shmid=5439503  
uid=501 gid=502 cuid=501        cgid=502  
mode=01640      access_perms=0640  
bytes=419438592 lpid=5993       cpid=5283       nattch=19  
att_time=Sat Jun 29 19:29:42 2013    
det_time=Sat Jun 29 19:29:42 2013    
change_time=Sat Jun 29 18:49:33 2013    

 

 
     ㈡ 共享内存
     
     shmmax 内核参数定义单个共享内存段的最大值、如果该参数设置小于Oracle SGA设置
     那么SGA就会被分配多个共享内存段、引发性能下降、为了避免多个共享内存段、
     我们可以修改shmmax 内核参数、使SGA 存在于一个共享内存段中
     
     修改shmmax方法:
     
  
   1) 直接编辑/etc/sysctl.conf 
     2) sysctl -w kernel.shmmax=xxx
     3) echo "kernel.shmmax=xxxx" >> /etc/sysctl.conf 

 

     
     修改完之后、sysctl -p 
     
     在Oracle 里面、如果开启 NUMA特性、则共享内存是要分段的、这会引发很多的bug
     DBA 在启动一个特性时、一定要了解该特性的来龙去脉以及全面评估该特性所产生的影响!
     所以、我们一般:
     
   
  alter system set "_enable_numa_optimization"= false scope=spfile;

 

     
     不过、这个隐藏参数到 11gR2 好像被废除了、11gR1还存在的
     这也从侧面告诉我们、Oracle的东东、我们还是使用R2 的比较放心哈
     
     ㈢ 查看Oracle共享内存的使用情况
 
[plain] 
sys@ORCL> oradebug setmypid  
Statement processed.  
sys@ORCL> oradebug ipc  
Information written to trace file.  
sys@ORCL> oradebug TRACEFILE_NAME  
/u01/app/oracle/admin/orcl/udump/orcl_ora_6161.trc  

 

 
     将trc文件结合ipcs -m -i shmid 来对照查看、这里就不赘述了
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,