达梦存储过程执行后 sql日志信息粗读

如何调试达梦存储过程?快速定位问题
dmgdb 或 manager图形工具

我觉得还可以靠sql日志和DBMS_OUTPUT包,不过最省事的办法放到了最后面,一个sql就能搞清楚了

来段演示代码

set serveroutput on
drop table t1;
create TABLE t1 (id int, gc varchar(20), rq timestamp);create or replace procedure proc1
as
beginDBMS_OUTPUT.PUT_LINE('proc1--过程');insert into t1 values (1, 'proc1--过程', sysdate);commit;DBMS_LOCK.sleep(1);
end;
/create or replace procedure proc2
as
beginDBMS_OUTPUT.PUT_LINE('proc2..过程');insert into t1 values (2, 'proc2..过程', sysdate);commit;DBMS_LOCK.sleep(1);
end;
/create or replace procedure proc_test(i in int)
as j int;
beginDBMS_OUTPUT.PUT_LINE('主体过程开始');DBMS_LOCK.sleep(1);call proc2;call proc1;call proc2;insert into t1 values (i+10,'main proc', sysdate);commit;DBMS_OUTPUT.PUT_LINE('主体过程结束!');
end;
/call proc_test(3);
select id,gc,to_char(rq,'yyyy-mm-dd hh24:mi:ss') from t1;

先从最底下说
在这里插入图片描述
执行这个简单的查询后,在sql日志(通常在$DM_HOME/log/)
在这里插入图片描述

中显示
在这里插入图片描述
sql日志详细内容:


2025-02-13 21:06:11.718 (EP[0] sess:0x7fffbc042a20 thrd:66316 user:SYSDBA trxid:104349 stmt:0x7fffbc03e7b8 appname:disql ip:::1) [ORA]: select id,gc,to_char(rq,'yyyy-mm-dd hh24:mi:ss') riqi from t1;
2025-02-13 21:06:11.719 (EP[0] sess:0x7fffbc042a20 thrd:66316 user:SYSDBA trxid:104349 stmt:0x7fffbc03e7b8 appname:disql ip:::1) DLCK used time:1(us)
2025-02-13 21:06:11.719 (EP[0] sess:0x7fffbc042a20 thrd:66316 user:SYSDBA trxid:104349 stmt:0x7fffbc03e7b8 appname:disql ip:::1) [SEL] select id,gc,to_char(rq,'yyyy-mm-dd hh24:mi:ss') riqi from t1; EXECTIME: 0(ms) ROWCOUNT: 4(rows) EXEC_ID: 1902.

信息量很丰富。
2025-02-13 21:06:11时间点开始执行这个简单的查询sql
EP[0] 我猜代表执行节点execute point的意思,可以理解为oracle的thread 或实例,默认从0开始,DSC(类似ORACLE的RAC环境)中会看到EP[1]
sess 代表会话id,select to_number(‘7fffbc03e7b8’,‘xxxxxxxxxxxxxxxxxxxxx’) sid from dual ;
在这里插入图片描述
thrd代表线程号
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从会话、线程和进程信息中都可以看到此id
user显示哪个用户发起的这个sql

trxid事务id,即使查询也分配一个事务id,如果会话内开启一个事务则会增加1
stmt sql执行句柄,同一会话的不同sql还是一样的(有点像sess_id)
在这里插入图片描述
但是执行的话就变为null了
在这里插入图片描述

appname应用程序名,这里看到是disql程序执行的这个sql
ip客户端ip
而且这几行的上述几列都是一样的,说明是一件事

**[ORA]**这就有些好看了,估计是从ORA的解析sql模块带过来的信息

[SEL]这是sql的类型,可能有DML、SEL、INS、DEL等,也有可能是操作符,例如DLCK
在这里插入图片描述
锁定数据字典,估计是解析这个查询sql时触发的对数据字典加了一次锁。

后面跟着输出的就是sql文本,如果多行sql输出也会换行
EXECTIME: 0(ms) ROWCOUNT: 4(rows) EXEC_ID: 1902
EXECTIME: 0(ms)执行耗时1毫秒,
ROWCOUNT: 4(rows) 返回记录数
EXEC_ID: 执行id是1902,可以用于et分析性能

除了执行应用的sql,内部一些操作也会被记录,例如释放undo信息:
purg2_page free pseg page (0, 831)

综上,
一个简单的查询语句会输出3行信息,按时间发生顺序输出。
sess、thrd可以定位会话信息。
trxid会随着会话里执行的事务数量而增长,如果为0说明事务结束。
stmt在结束事务时为null
user、trxid、stmt、appname为空可能是内部的系统调用

进入正题,调用存储过程后,会记录什么信息?
在这里插入图片描述
在这里插入图片描述
根据日志输出,可见只记录存储过程最外层的执行情况,如果内部有事务才输出相关信息。

根据存储过程的代码
在这里插入图片描述
共发生了4次提交,所以日志中事务号,从trxid:104379 一直增加到trxid:104382
[CAL] call proc_test(3); EXECTIME: 4116(ms) EXEC_ID: 1964
执行存储过程时,传入参数3耗时4116毫秒,执行id是1964(这个很关键,看下面)

主干执行情况

select line_no,method,time_used,FIRST_START_TIME from V$DMSQL_EXEC_TIME where exec_id=&exec_id and caller='&proc_name' and type$='METHOD' order by 1 ;

在这里插入图片描述

或者直接看哪步最慢

 select type$,seq,level,caller,method,time_used,sql_text,line_no,FIRST_START_TIME from  V$DMSQL_EXEC_TIME where exec_id=&exec_id order by level,time_used desc;

在这里插入图片描述
这4秒多都是由这些子过程中或直接调用的sleep导致的。

如果你的数据库还没开启sql日志,请参考

https://eco.dameng.com/document/dm/zh-cn/ops/installation-install#2.3%20%E9%85%8D%E7%BD%AE%20SQL%20%E6%97%A5%E5%BF%97
在这里插入图片描述
截图不全,去达梦官网看完整的配置步骤。

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

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

相关文章

fpga助教面试题

第一题 module sfp_pwm( input wire clk, //clk is 200M input wire rst_n, input wire clk_10M_i, input wire PPS_i, output reg pwm ) reg [6:0] cunt ;always (posedge clk ) beginif(!rst_n)cunt<0;else if(cunt19) //200M是10M的20倍cunt<0;elsecunt<cunt1;…

【分布式】Hadoop完全分布式的搭建(零基础)

Hadoop完全分布式的搭建 环境准备&#xff1a; &#xff08;1&#xff09;VMware Workstation Pro17&#xff08;其他也可&#xff09; &#xff08;2&#xff09;Centos7 &#xff08;3&#xff09;FinalShell &#xff08;一&#xff09;模型机配置 0****&#xff09;安…

GPT-Sovits:语音克隆训练-遇坑解决

前言 本来以为3050完全无法执行GPT-Sovits训练的&#xff0c;但经过实践发现其实是可以&#xff0c;并且仅花费了十数分钟便成功训练和推理验证了自己的语音模型。 官方笔记&#xff1a;GPT-SoVITS指南 语雀 项目地址&#xff1a;https://github.com/RVC-Boss/GPT-SoVITS 本人…

React之旅-03 路由

做为前端开发框架&#xff0c;React 的组件化设计思想&#xff0c;使前端开发变得更加灵活高效。对于大型复杂的项目来说&#xff0c;页面之间的导航变得尤为重要。因此如何管理路由&#xff0c;是所有开发者必须考虑的问题。 React 官方推荐的路由库-React Router&#xff0c…

Word接入DeepSeek(API的作用)

1.打开”Word”&#xff0c;点击“文件”。 2.点击“选项”。 3.点击“信任中心”——“信任中心设置”。 4. 勾选”启用所有宏“&#xff0c;点击”确定“。 5.点击“自定义功能区”&#xff0c;勾选上“开发工具”&#xff0c;点击“确定”。 6.返回“文件——开发工具“下的…

SQL知识体系

SQL复习 MySQL SQL介绍 SQL SQL的全拼是什么&#xff1f; SQL全拼&#xff1a;Structured Query Language&#xff0c;也叫结构化查询语言。 SQL92和SQL99有什么区别呢&#xff1f; SQL92和SQL99分别代表了92年和99年颁布的SQL标准。 在 SQL92 中采用&#xff08;&#xff…

网络安全治理模型

0x02 知识点 安全的目标是提供 可用性 Avialability机密性 confidentiality完整性 Integrity真实性 Authenticity不可否认性 Nonrepudiation 安全治理是一个提供监督、问责和合规性的框架 信息安全系统 Information Security Management System ISMS 策略&#xff0c;工作程…

Ubuntu学习备忘

1. 打开Terminal快捷键 ctrl alt t 2.Ubuntu22.04的root没有默认初始密码&#xff0c; 为root设置密码&#xff0c;下面链接的step1, How to allow GUI root login on Ubuntu 22.04 Jammy Jellyfish Linux - LinuxConfig

C#: 创建Excel文件并在Excel中写入数据库中的数据

实现思路&#xff1a; 1.检查数据是否可导出 2.弹出文件保存对话框 3.删除已存在的同名文件 4.创建 Excel 应用实例 5.导出表头 6.导出数据 7.保存 Excel 文件 8.释放 Excel 资源 9.导出成功提示 static void ExportToExcel(DataTable Data, string fileName) { // 如果表格…

DeepSeek 和 ChatGPT 在特定任务中的表现:逻辑推理与创意生成

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ Linux网络编程笔记&#xff1a; https://blog.cs…

HTTP2.0 和 HTTP1.1 的区别

多路复用&#xff08;优化管道&#xff09;&#xff0c;基于HTTPS&#xff0c;二进制帧&#xff0c;Header压缩&#xff0c;服务器推送 多路复用&#xff1a;HTTP/2.0 在一个连接里&#xff0c;客户端和浏览器都可以同时发送多个请求和响应&#xff0c;而不用按照顺序一一对应&…

【物联网】电子电路基础知识

文章目录 一、基本元器件1. 电阻2. 电容3. 电感4. 二极管(1)符号(2)特性(3)实例分析5. 三极管(1)符号(2)开关特性(3)实例6. MOS管(产效应管)(1)符号(2)MOS管极性判定(3)MOS管作为开关(4)MOS管vs三极管7. 门电路(1)与门(2)或门(3)非门二、常用元器件…

基于ffmpeg+openGL ES实现的视频编辑工具-解码(四)

在开发视频编辑工具时,预览功能是基石,它涵盖视频、图片以及音频播放,而视频解码则是实现视频预览及后续编辑操作的关键环节。本文聚焦于基于 FFmpeg 实现视频解码的过程,详细阐述开发中遭遇的痛点、对应的解决方式,以及核心代码的运作原理。 一、开发背景与目标 视频编…

python shlex

python shlex 核心函数 shlex.split(s, commentsFalse, posixTrue) 作用&#xff1a;将字符串按类似 Shell 的语法规则分割成参数列表&#xff0c;常用于安全处理命令行输入。参数说明&#xff1a; s&#xff08;必需&#xff09;: 待分割的字符串&#xff08;如 “ls -l ‘…

软件测试用例设计方法之正交表

一、概念 能够使用最小的测试过程集合获得最大的测试覆盖率&#xff0c;从全面试验中挑选出有代表性的点进行测试。适用于配置类软件&#xff0c;组合比较多的情况。 正交表Ln(m^k)&#xff1a; 特点&#xff1a;均匀分散、整齐可比、高效、快速、经济 n&#xff1a;正交表的…

Cursor实战:Web版背单词应用开发演示

Cursor实战&#xff1a;Web版背单词应用开发演示 需求分析自行编写需求文档借助Cursor生成需求文档 前端UI设计后端开发项目结构环境参数数据库设计安装Python依赖运行应用 前端代码修改测试前端界面 测试数据生成功能测试Bug修复 总结 在上一篇《Cursor AI编程助手不完全指南》…

DeepSeek与ChatGPT:会取代搜索引擎和人工客服的人工智能革命

云边有个稻草人-CSDN博客 在众多创新技术中&#xff0c;DeepSeek和ChatGPT无疑是最为引人注目的。它们通过强大的搜索和对话生成能力&#xff0c;能够改变我们与计算机交互的方式&#xff0c;帮助我们高效地获取信息&#xff0c;增强智能服务。本文将深入探讨这两项技术如何结合…

JavaScript中判断元素是否在可视区域内

JavaScript中判断元素是否在可视区域内 1.有什么应用2.方法1-----使用offsetTop、scrollTop3.方法2-----getBoundingClientRect4.方法3-----Intersection Observer 1.有什么应用 懒加载列表的无限滚动计算广告元素的曝光情况 2.方法1-----使用offsetTop、scrollTop offsetTo…

PyTorch与TensorFlow的对比:哪个框架更适合你的项目?

在机器学习和深度学习领域&#xff0c;PyTorch 和 TensorFlow 是最流行的两个框架。它们各有特点&#xff0c;适用于不同的开发需求和场景。本文将详细对比这两个框架&#xff0c;帮助你根据项目需求选择最合适的工具。 一、概述 PyTorch 和 TensorFlow 都是深度学习框架&…

挖掘图片的秘密:如何用piexif提取和修改Exif数据

Exif&#xff08;Exchangeable Image File Format&#xff09;数据是一个广泛用于数字图像&#xff08;尤其是JPEG和TIFF格式&#xff09;中的元数据格式。它包含了关于图像的各种信息&#xff0c;包括拍摄设备的类型、拍摄时间、光圈、曝光时间、GPS定位信息等。Exif数据使得用…