######背景######

今天例行点检发现一套RAC环境 /dev/shm  88%占用率,看了下面的文件

[root@szpmshm]# cd /dev/shm 

[root@szpmshm]# ls -trlh

这里都是一些看起来像是ASM生成的文件,这个目录因为是虚拟内存使用的不能清理,这里选择对它进行扩容

 /dev/shm 扩容_数据库

如下去查看 /etc/fstab 目录 发现有设置这个参数 为12.5G

 /dev/shm 扩容_/dev/shm_02

########################################################

解决方案:

MOS参考,测试单机环境已测试  四个节点依次执行
Oracle Linux: Set The Size Of /dev/shm (tmpfs) (Doc ID 2500032.1)

 /dev/shm 扩容_/dev/shm_03

现有环境如下:

RAC环境四节点 --sb02mes /dev/shm 扩容分配内存大小  root身份

OS :cat /etc/redhat-release

Red Hat Enterprise Linux Server release 7.9 (Maipo) 

数据库版本:sqlplus -v

SQL*Plus: Release 19.0.0.0.0 - Production Version 19.12.0.0.0

GRID版本:  crsctl query crs activeversion

Oracle Clusterware active version on the cluster is [19.0.0.0.0]  

1.备份要变更的文件

cp /etc/fstab /etc/fstab.backup

2.修改配置文件

vi /etc/fstab

tmpfs           /dev/shm                tmpfs   size=51200M     0 0

3.重新挂载 验证查看

mount -o remount /dev/shm

df -h|grep shm

4.查看集群状态/每个节点sqlplus进入切换日志并查看日志

crsctl status res -t

sqlplus / as sysdba

SYS@sb02mes1> alter system switch logfile;

cd $ORACLE_BASE/diag/rdbms/sb02mes/sb02mes1/trace

tail -500f  alert_sb02mes1.log


###end 扩充结束


5.补充

【问题总结】

一、/dev/shm设置多大合适

/dev/shm,大小要和PGA_AGGREGATE_TARGET一样或者更高。

多实例情况下,需要为所有实例的PGA_AGGREGATE_LIMIT的总和

我们是两个实例每个设置未32G.所以建议/dev/shm设置未64G


二、什么会导致MGA文件不断增长

有两个原因

1、开启AMM(自动内存管理automatic memory management),需要设置MEMORY_TARGET 或 MEMORY_MAX_TARGET 。

我们启动的两个实例中都未设置MEMORY_TARGET 或 MEMORY_MAX_TARGET

2、MGA暂用/dev/shm的现象,文档参考2638904.1


解释如下

关于MGA(Managed Global Area):


MGA允许一组“较小的”进程(甚至所有进程)在持续时间内共享地址空间(通常是查询)。MGA由包含段和堆的命名空间组成,这些段和堆可以直接或通过堆管理器(KGH)进行空间管理。

进程可以在它们所需的持续时间内附加到它们的命名空间。nbsp;例如,在并行查询环境中,参与QC的PQ可以共享来自QC的命名空间以共享结果。nbsp;一旦完成,它们将从相同的名称空间中分离,并且名称空间可以被拆除。

MGA是动态分配的,这为我们提供了更大的灵活性来创建,控制和共享。nbsp;共享是动态的,因为过程在共享之前进行协调。&从这个意义上说,MGA位于SGA和PGA之间。nbsp;此外,由于MGA是一个共享内存区域,

因此,锁存器(锁存器:MGA)用于控制访问并对其进行保护


有下面部分会使用到MGA

1、IPC,IPC 0 MGA命名空间的主要使用者是Buffer Cache/DLM(kcl. c通过ksmsq API使用它

2、MGA哈希连接 ,并行查询执行使用MGA哈希联接。nbsp;用于执行计划中的Hash join共享操作。& nbsp;它提高了大型连接的性能

3、IMCDT,IMCDT由游标持续时间表使用。并行从站也使用它将游标持续时间表加载到内存中

从19 c开始,我们现在可以通过查询v$pgastat视图从数据库实例中获取MGA的使用情况

samoddw1 maximum MGA allocated 为3328M

sb02eap1 maximum MGA allocated 为5888M


select owner, segment_type, segment_name

from dba_extents

where file_id = &FILE

and &BLOCK between block_id and block_id + blocks - 1;