为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM Database Server x64 V8 (--03134284071-20230523-191192-10000)
【操作系统】:GNU/Linux Linux 3.10.0-1160.el7.x86_64 64 amd64
【CPU】:Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz230 x 64
【问题描述】*:
数据库进程使用内存远大于BUFFER、MEMORY_POOL配置的大小,该如何释放内存资源呢?
看你发的图片,你的服务器上开启了多个数据库实例。数据库的的VIRT虚拟内存大小跟实际分配内存大小RES基本一致。说明的确是被数据库使用了。内存不太好释放,越新的版本对内存的释放支持更好。
建议如下:
1、调整BUFFER至30720,BUFFER_POOLS=29;
2、调整MAX_OS_MEMORY = 50;
3、调整MEMORY_POOL = 10240,MEMORY_TARGET=20480,
MEMORY_N_POOLS = 13。
使用dmdba用户去执行,看看有没有权限
cat /etc/security/limits.conf
SELECT
(
SELECT
SUM(CAST(PAGE_SIZE AS NUMBER) *CAST(N_PAGES AS NUMBER))/1024/1024
FROM
V$BUFFERPOOL
) ||'MB' AS 缓冲区总大小,
(
SELECT
SUM(TOTAL_SIZE)/1024/1024
FROM
V$MEM_POOL
)||'MB' AS 池总大小,
(
SELECT
SUM(CAST(PAGE_SIZE AS NUMBER) *CAST(N_PAGES AS NUMBER))/1024/1024
FROM
V$BUFFERPOOL
) +
(
SELECT
SUM(TOTAL_SIZE)/1024/1024
FROM
V$MEM_POOL
) ||'MB' AS 总内存大小
FROM DUAL;
内存使用不是百分百精准控制的,如果觉得内存占用比较高,可以尽量调小buffer试一试