达梦定时任务更新阻塞信息到表

news/2025/10/15 15:56:54/文章来源:https://www.cnblogs.com/xuchuangye/p/19143572

数据库阻塞,一些原因,查不到历史的阻塞信息。配置存储过程,把一些阻塞信息更新到表,然后配置定时任务,定时更新

 

 

--STEP1:创建辅助记录表:

CREATE TABLE TRX_WAIT(
"STATTIME" TIMESTAMP,
"SS" INTEGER,
"WT" VARCHAR2(30),
"WT_SESS_ID" BIGINT,
"WT_SQL_TEXT" VARCHAR(1000),
"WT_STATE" VARCHAR(10),
"WT_TRX_ID" BIGINT,
"WT_USER_NAME" VARCHAR(128),
"WT_CLNT_IP" VARCHAR(128),
"WT_APPNAME" VARCHAR(128),
"WT_LAST_SEND_TIME" DATETIME(6),
"FM" VARCHAR2(30),
"FM_SESS_ID" BIGINT ,
"FM_SQL_TEXT" VARCHAR(1000),
"FM_STATE" VARCHAR(10),
"FM_TRX_ID" BIGINT,
"FM_USER_NAME" VARCHAR(128),
"FM_CLNT_IP" VARCHAR(128),
"FM APPNAME" VARCHAR(128),
"FM LAST SEND TIME"DATETIME(6)
);

 

--STEP2:创建辅助存储过程GET_TX_WAIT

CREATE PROCEDURE GET_TX_WAIT AS
BEGIN
INSERT INTO TRX_WAIT
SELECT SYSDATE AS STATTIME,
DATEDIFF(SS,S1.LAST_SEND_TIME,SYSDATE) AS SS,
'被阻塞的信息' AS WT,
S1.SESS_ID AS WT_SESS_ID,
S1.SQL_TEXT AS WT_SQL_TEXT,
S1.STATE AS WT_STATE,
S1.TRX_ID AS WT_TRX_ID,
S1.USER_NAME AS WT_USER_NAME,
S1.CLNT_IP AS WT_CLNT_IP,
S1.APPNAME AS WT_APPNAME,
S1.LAST_SEND_TIME AS WT_LAST_SEND_TIME,
'引起阻塞的信息' AS FM,
S2.SESS_ID AS FM_SESS_ID,
S2.SQL_TEXT AS FM_SQL_TEXT,
S2.STATE AS FM_STATE,
S2.TRX_ID AS FM_TRX_ID,
S2.USER_NAME AS FM_USER_NAME,
S2.CLNT_IP AS FM_CLNT_IP,
S2.APPNAME AS FM_APPNAME,
S2.LAST_SEND_TIME AS FM_LAST_SEND_TIME
FROM V$SESSIONS S1,
V$SESSIONS S2 ,V$TRXWAIT W
WHERE S1.TRX_ID = W.ID
AND S2.TRX_ID = W.WAIT_FOR_ID;
COMMIT;
END;

 


----STEP3:创建作业定时10分钟搜一次,收集阻塞数据:

call SP_CREATE_JOB('GETTRX',1,0,'',0,0,'',0,'获取历史阻塞信息');

call SP_JOB_CONFIG_START('GETTRX');

call SP_ADD_JOB_STEP('GETTRX', 'GETTRX_SQL', 0, 'call GET_TX_WAIT;', 1, 1, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE('GETTRX', 'GETTRX01', 1, 1, 1, 0, 10, '00:00:00', '23:59:59', '2025-10-13 17:48:00', NULL, '');

call SP_JOB_CONFIG_COMMIT('GETTRX');

 

--最后查表,就知道历史的阻塞信息了
select * from TRX_WAIT;

 


###测试:

CREATE TABLE "SYSDBA"."TEST1"
(
"NAME" VARCHAR(20),
"ID" INT NOT NULL,
NOT CLUSTER PRIMARY KEY("ID"));

打开两个查询窗口:

在两个窗口都输入插入数据语句:
insert into sysdba.test1 values('aaa',1);

一个窗口顺利执行:
第二个窗口无反应,发生阻塞:

第一个窗口里,插入的数据由于没有 commit 提交,事务没有结束,此时因为存在主键约束,第二个窗口查不到对应的数据,同样也无法插入,此时发生阻塞。

再打开个窗口执行

call GET_TX_WAIT;


再查询,就可以看到阻塞信息了
select * from TRX_WAIT;

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/937600.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

左值,右值和移动语义

左值、右值和移动语义 左值和右值 C++的表达式分为左值表达式和右值表达式,右值又分为纯右值和将亡值。 左值和右值的定义:指代非临时对象且不可移动的表达式被称为左值表达式;当对象被用左值时,被使用的是对象的身…

2025年千斤顶厂家最新权威推荐排行榜:液压千斤顶、机械千斤顶、电动千斤顶源头厂家综合实力深度解析

2025年千斤顶厂家最新权威推荐排行榜:液压千斤顶、机械千斤顶、电动千斤顶源头厂家综合实力深度解析行业背景与发展趋势千斤顶作为工业领域不可或缺的起重设备,其技术发展与制造业升级息息相关。随着基础设施建设的持…

VKD104CR是永嘉微VINKA推出低功耗2路触摸芯片该芯片具有较高的集成度

VKD104CR是2通道触摸检测芯片,功耗低、工作电压范围宽以及稳定的触摸检测效果可以广泛的满足不同应用的需求,此触摸检测芯片是专为取代传统按键而设计,内建稳压电路,提供稳定电压给触摸检测电路使用,触摸检测PAD的…

Cookie如何设置HTTPOnly和Secure 以防止XSS跨站脚本攻击

设置HttpOnly和Secure标志于Cookie中是增强Web应用安全性的重要措施。这两个标志帮助防止跨站脚本攻击(XSS)和中间人攻击(MitM)。下面是关于如何设置这些标志的具体步骤: PHP: 在发送cookie时使用setcookie()函数…

STM32学习路线!600+讲课程!软硬件兼修:裸机+RTOS+LVGL+硬件设计+项目实战 (STM32多核心开发板)

私信小编,备注“103开发板”,免费领取教程/源码/项目资料~ 在智能设备深度整合与万物互联加速推进的当下,STM32正从单一功能控制走向复杂系统集成。从智能家居的精准传感控制到工业物联网的实时数据采集,从AIoT终端…

Vue中展示字符串,有换行符的怎么换行展示

Vue中展示字符串,有换行符的怎么换行展示1 简介 1)字符串带了换行符 "你好\r\nhello\r\nworld" 2)使用{{}}直接展示{{rowdetail.lastWeekContent}} 3)展示效果发现没有换行 2 处理 1)使用<pre&g…

zerotier自建planet内网穿透详细配置教程 - IT苦行僧

zerotier自建planet内网穿透详细配置教程 配置过程,遇到不懂的问题,可以直接复制代码或者报错信息给AI,帮助你答疑解惑。 前言 本文使用Zerotier,这个软件官方也提供免费通道,但是很不稳定,所以本文是自建Planet…

【2025-10-11】适应变化

20:00劳作是眼能看见的爱。如果你进行劳作时不是满怀着爱,而是带着厌恶心里,还不如丢下工作,到庙门去等待高高兴兴劳作者们的周济——纪伯伦人性最厌讨的事物之一就是变化。但是,人类的发展只能依靠变化。所以,克…

C语言的学习——常量

常量的输出方式有四种 1.第一种是输出整数整数的输出需要用d来表示占位符 2.第二种是输出小数小数的输出需要用f来表示占位符 3.第三种是输出字符字符的输出需要用c来表示占位符,同时也需要用引号来引注输出的内容 4.…

会充电的CANoe,高效完成即插即充(PnC)智能充电功能测试

ISO 15118-2标准中描述的PnC功能,可以实现插枪即充电,识别、计费信息、充电参数都通过高级别通信在EV和EVSE之间自动交换。简化了电动汽车的充电过程,提高了用户体验,为电动汽车行业带来了更智能、更便捷的充电解决…

Bridge 2025超详细保姆级下载安装全教程(含软件下载)

目录一、Adobe Bridge 2025 软件介绍二、Adobe Bridge 2025 下载方式三、Adobe Bridge 2025 详细安装步骤步骤 1:解压 Bridge 2025 安装包步骤 2:以管理员身份运行安装程序步骤 3:选择是否修改安装路径步骤 4:自定…

legit torrents, legit trackers

http://www.legittorrents.info/ is dead.but that site recommends the following ones:PlaneShift Revision3 gameupdates.org vodo.net Pure Pwnage Cube 2: Sauerbraten Linuxtracker Public Domain Torrents

python 数学计算 32位精度

from decimal import Decimal, getcontext# Set precision high enough to handle 32 decimal places getcontext().prec = 50# Calculate step by step result = Decimal(20) / Decimal(6) / Decimal(3) / Decimal(3)…

2025年锅炉厂家最新权威推荐榜:燃气采暖锅炉/电热水锅炉/生物质锅炉/真空热水锅炉/蒸汽发生器全品类深度解析

2025年锅炉厂家最新权威推荐榜:燃气采暖锅炉/电热水锅炉/生物质锅炉/真空热水锅炉/蒸汽发生器全品类深度解析行业背景与发展趋势锅炉作为工业生产与民用供热领域的核心设备,其技术发展与市场需求正经历深刻变革。随着…

容器技术k8s - 指南

容器技术k8s - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "C…

c语言之对齐函数代码示例

#define ALIGNMENT 8// 内存对齐:将size向上对齐到最近的ALIGNMENT倍数 static size_t align_size(size_t size) {if(size==0)return ALIGNMENT;// 对齐公式:(size + 对齐数 - 1) & ~(对齐数 - 1)return (size +…

PyAutoGUI库自动化测试脚本工具模拟键盘鼠标操作

PyAutoGUI主要用于模拟鼠标和键盘操作,支持Windows、macOS和Linux桌面环境。 其所有用法尽在此处:import pyautogui import timedef moveDemo():print("鼠标位置:",pyautogui.position()) # 显示当前鼠标…

什么是Barriers IO

什么是Barriers I/O 目录什么是Barriers I/O1. 为什么需要 Barriers I/O?2. Barriers I/O 的核心原理3. 应用场景:哪里会用到它?4.Barriers I/O 与普通 I/O 核心差异对比表5.Barriers I/O 启用与验证操作指南(Linu…

2025 年床上用品厂家最新推荐排行榜:从老牌实力到新锐创新的品质之选,涵盖批发与婚嫁选购指南

当下床上用品市场呈现 “新旧交织” 的复杂格局:一方面老牌品牌阵营中,部分产品固守传统工艺,难以适配年轻群体的个性化需求;另一方面近五年涌现的新锐品牌凭借技术创新快速崛起,但消费者对其品质与服务缺乏有效认…

现代C++对象工厂模式实现解析

View Post现代C++对象工厂模式实现解析这篇文章将介绍一个基于现代C++特性的对象工厂实现方案,该方案采用了模板元编程和静态注册技术,为创建对象提供了灵活且类型安全的机制。 核心设计理念这个工厂模式实现包含三个…