为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:麒麟V10
【CPU】:
【问题描述】*:FLASHBACK SYS和VIRTUAL MACHINE分别是什么内存池,目前的分配是否正常
VARTUAL MACHINE:当服务器在执行sql语句时,会向会话池申请一片内存作为sql语句的虚拟机内存池,存储执行这条sql语句时的信息。当sql语句执行完毕,服务器会销毁该sql语句的虚拟机内存池,内存归还给会话池。在执行过程中用到的内存大部分是从这里申请的。当系统中存储过程、存储函数、包等对象较多时,此参数可以适当放大。
可以通过查询v$mem_pool判断内存池空闲还是紧张:
select
name, --内存池名称
is_shared, --是否是共享的
is_overflow, --是否用到了备份池
org_size/1024.0/1024.0, --内存池初始大小
TOTAL_size/1024.0/1024.0, --内存池总大小(包括扩展的)
RESERVED_SIZE/1024.0/1024.0, --当前已分配大小(包括扩展的)
DATA_SIZE/1024.0/1024.0, --实际有效字节
EXTEND_SIZE, --每次扩展多少
TARGET_SIZE, --目标大小
N_EXTEND_NORMAL , --TARGET范围内累计扩展次数
N_EXTEND_EXCLUSIVE --超过TARGET累计扩展次数
from v$mem_pool
order by TOTAL_size desc;
注意:
1、N_EXTEND_EXCLUSIVE如果长期大于0,说明长期从池外扩展,可能存在内存泄露。需要重点关注。
2、如果RESERVED_SIZE比org_size小,说明内存池非常空闲。
3、如果TOTAL_size比TARGET_SIZE大,说明内存池不够,经常向池外申请,需要把对于的参数调大。尽量保持每个池自持。
FLASHBACK SYS 为跟闪回相关内存池
VIRTUAL MACHINE 为每个会话运行时会使用到得内存池,每有一个会话会有一个