暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DM清理kill大于10s的select会话语句

原创 HenryRen 2023-09-13
222

使用过程定期清理kill大于10s的select会话语句,以免阻塞其它会话,供参考

/****************************************** 功能说明:定期清理kill大于10s的select会话语句,以免阻塞其它会话 CREATE TABLE "KILL_STL_SESS_BAK" ( "TF" VARCHAR2(39), "SESS_ID" BIGINT, "TRX_ID" BIGINT, "MSGT" INTEGER, "SQL_TEXT" VARCHAR2(32767), "CURR_SCH" VARCHAR(128), "USER_NAME" VARCHAR(128), "CLNT_HOST" VARCHAR(128), "CLNT_IP" VARCHAR(128), "CLNT_TYPE" VARCHAR(128), "OSNAME" VARCHAR(128), "LAST_SEND_TIME" VARCHAR2(32767), "RECORDING_TIME" TIMESTAMP ); ******************************************/ create or replace procedure dm_dba_close_slt_session AUTHID DEFINER as begin for rs in( select 'sp_close_session('||TF||');' as "op_sql", "SESS_ID", "TRX_ID" , "MSGT" , "SQL_TEXT" , "CURR_SCH" , "USER_NAME", "CLNT_HOST" , "CLNT_IP" , "CLNT_TYPE" , "OSNAME" , "LAST_SEND_TIME", getdate() as "RECORDING_TIME" from ( select sess_id tf,-- sp_close_session sess_id , sess_id , trx_Id , datediff(ss, last_recv_time, sysdate) MsgT, --已执行时间 s '--'||CURR_SCH ||' '|| to_char(sf_get_session_sql(sess_id)) "SQL_TEXT" ,--完整sql curr_sch , user_name , clnt_host , clnt_ip , clnt_type , osname , left(last_send_time, 19) as last_send_time from v$sessions where state='ACTIVE' -- 过滤update类型的SQL and lower (to_char(sf_get_session_sql(sess_id))) like 'select %' ) where MsgT>=10 ) --MsgT 单位秒,查询大于10s的select会话语句; loop execute immediate rs."op_sql"; insert into "KILL_SESS_BAK" values(rs."op_sql", rs."SESS_ID", rs."TRX_ID", rs."MSGT", rs."SQL_TEXT", rs."CURR_SCH", rs."USER_NAME", rs."CLNT_HOST", rs."CLNT_IP", rs."CLNT_TYPE", rs."OSNAME", rs."LAST_SEND_TIME", rs."RECORDING_TIME"); commit; end loop; end; / --disql执行需要加/ --执行语句kill会话 dm_dba_close_slt_session;

查询备份表结果示例:

select * from KILL_SESS_BAK;

最后修改时间:2023-09-13 22:21:15
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论