查询每个会话使用内存大小(DM8达梦数据库)

1 环境介绍

  • 在某些环境数据库内存增长到服务器内存用完,发生OOM事件,可以分析sql会话使用内存大小;

2 查询每个sql会话使用内存大小

-- DROP TABLE T_SQLMEM;
-- 创建SQL会话占用内存记录表
CREATE TABLE IF NOT EXISTS T_SQLMEM AS 
--查询每个会话使用内存大小:
SELECT
	M.CREATOR  ,
	S.USER_NAME,
	S.SQL_TEXT ,
	S.CUR_SQLSTR,
	M.NAME  MEM_NAME ,
	M.TOTAL_SIZE/1024/1024 TOTAL_M,
	M.DATA_SIZE /1024/1024 DATA_SIZE_M,
	S.STATE,
	S.CLNT_IP,
	S.CLNT_VER,
	S.CLNT_HOST,
	S.APPNAME,
	S.OSNAME,
	S.RUN_STATUS,
	S.MSG_STATUS,
	S.CREATE_TIME,
	S.LAST_RECV_TIME,
	S.LAST_SEND_TIME,
	DATEDIFF(S, LAST_RECV_TIME, SYSDATE) EXECTIME_S,
	SYSDATE() INS_SYSDATE

FROM
V$MEM_POOL M,
V$SESSIONS S
WHERE
M.CREATOR = S.THRD_ID
ORDER BY TOTAL_M DESC;

-- 可以将INSERT 一段SQL 配置到作业,定时监测
INSERT INTO T_SQLMEM SELECT
	M.CREATOR  ,
	S.USER_NAME,
	S.SQL_TEXT ,
	S.CUR_SQLSTR,
	M.NAME  MEM_NAME ,
	M.TOTAL_SIZE/1024/1024 TOTAL_M,
	M.DATA_SIZE /1024/1024 DATA_SIZE_M,
	S.STATE,
	S.CLNT_IP,
	S.CLNT_VER,
	S.CLNT_HOST,
	S.APPNAME,
	S.OSNAME,
	S.RUN_STATUS,
	S.MSG_STATUS,
	S.CREATE_TIME,
	S.LAST_RECV_TIME,
	S.LAST_SEND_TIME,
	DATEDIFF(S, LAST_RECV_TIME, SYSDATE) EXECTIME_S,
	SYSDATE() INS_SYSDATE

FROM
V$MEM_POOL M,
V$SESSIONS S
WHERE
M.CREATOR = S.THRD_ID
ORDER BY TOTAL_M DESC;

-- 查询SQL会话占用内存记录表
SELECT * FROM T_SQLMEM ORDER BY TOTAL_M  DESC;

3 达梦数据库学习使用列表

达梦数据库学习使用列表 - - 点击跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值