0
点赞
收藏
分享

微信扫一扫

dm高消耗sql处理 (两位大哥整理)


DM

查看数据库会话连接数


SELECT SF_GET_PARA_STRING_VALUE(1,'INSTANCE_NAME') AS 实例名,STATE AS 状态,CLNT_IP AS 连接IP,COUNT(*)AS 数量 FROM V$SESSIONS GROUP BY STATE,CLNT_IP ORDER BY STATE;


查询cpu占用最高的线程(dmserver pid xxx)


ps -eLo pcpu,pmem,pid,tid,psr,wchan:14,comm|grep xxx |sort



用户线程dm_sql_thd占用比较多,找到对应会话进行处理



select * from v$sessions where thrd_id in ('xxx',......'xxx');

--都是一些不活动会话,找到对应的sess_id 杀掉该会话


SP_CLOSE_SESSION(xxx);


根据时长信息查看正在运行的sql

select datediff(ss,last_recv_time,sysdate) ss,dbms_lob.substr(sf_get_session_sql(sess_id)),sess_id,substr(clnt_ip,8,13) from v$sessions where state='ACTIVE' order by 1 desc;


批量kill脚本

declare

v_cnt int;

begin

for rec in (select  sess_id from v$sessions  where state='ACTIVE' and clnt_ip<>'::1' and sql_text like '%SQL文本%' order by 1)

loop

 execute immediate 'sp_close_session(' || rec.sess_id || ');';

end loop;

end;

举报

相关推荐

0 条评论