当前位置: 首页 > news >正文

DBA必备脚本:Oracle获取正在运行SQL的字面SQL文本

我们的文章会在微信公众号IT民工的龙马人生和博客网站 ( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

前天发布了Oracle获取绑定变量的字面SQL文本版本更新,其中有朋友在说这种方式获取到的是历史的绑定变量值,无法复原当前会话运行的SQL的信息。虽然说在一些特殊的情况下确认会存在这种信息,比如关闭绑定变量窥探后,就有可能因为值的分布不均衡导致走错执行计划的情况。
要想获得当前会话正在执行SQL的执行计划,在Oracle中常见有两种方法,1,SQL MONITOR功能,但是是针对运行大于几秒的SQL语句才有效,不过想看当前正在运行的SQL的绑定变量,那基本上SQL运行的时间都是大于10秒以上了。2,通过dump session的方式,我们知道会话级别的绑定变量信息回存放在PGA中,所以通过dump session的方式可以获得绑定变量。

文中的脚本获取可关注公众号后回复”脚本“获得

SQL MONITOR方式运行

当前生产环境基本上都是大于11G的版本了,通过SQL MONITOR方式来获取是最为方便的。

下面简单的模拟一下通过脚本怎么快速的获取到SQL文本。

模拟会话执行SQL:

模拟SQL长时间运行。

VARIABLE b1 NUMBER;
VARIABLE b2 NUMBER;
EXEC :b1 := TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'));
EXEC :b2 := TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'));select count(*) from t1 a,t1 b,t1 c where a.created<TO_DATE(:b2, 'YYYYMMDDHH24MISS') and a.last_ddl_time<TO_DATE(:b1, 'YYYYMMDDHH24MISS') and a.object_id = b.object_id  and a.object_id = c.object_id

获取文本

再新开一个窗口

选择PDBSQL> @container.sqlLOGGINGFORCE
I C NAME            NO FORCE        OPEN_MODE  STATUS     OPEN_TIME            SIZE_G RECOVERY_S
- - --------------- --------------- ---------- ---------- ------------------- ------- ----------
1 3 HTZ             LOGGING.NO.NO   READ WRITE NORMAL     2025-08-21 21:54:39      11 ENABLED2 PDB$SEED        LOGGING.NO.NO   READ ONLY  NORMAL     2025-08-21 21:54:39       0 ENABLED1 CDB$ROOT        ..              READ WRITE            2025-08-21 21:54:39       0 ENABLED
Enter value for con_name: htz
Session altered.查询当前活动的会话,定位前面模拟的会话,获取到sid。
SQL> @we.sqlUSERNMAELAST_CALL              SESS_SERIAL               STATUS                            BLOCK_SESS      RUN   CLIENT                           ROW_WAIT
C  I EVENT              PROGRAM                 SEQ#                   OSPID                     STATE      COM SQL_ID             INST:SESS       TIME  OSUSER_MACHINE_PRO               FILE#:OBJ#:BLOCK#:ROW#
- -- ------------------ ----------------------- ---------------------- ------------------------- ---------- --- ------------------ --------------- ----- -------------------------------- ----------------------
0  1 OFS idle           oracle@arm01 (OFSD)     SYS|7.0K|2.3K          129:7516:122959           A.W.1.0S   UNK P.dzbggb6bmyfdx:                   7.04K oracle@arm01@122959_1229.SYSB    -1:0:0:0
1    [CPU]:             sqlplus@arm01 (TNS V1-  SYS|0|121              401:13702:207953          A.S.0MS    SEL C.8and70m9xxm3x:0                  0     oracle@arm01@207952.SYSU         -1:0:0:0
3    [CPU]:             sqlplus@arm01 (TNS V1-  SYS|5|847              157:26857:194957          A.S.4525MS SEL C.46tx8ah1fx2un:0                  5     oracle@arm01@194956.htz          11735:3:64494:0获取到文本信息SYS@HTZ@ARM19C> @sql_fulltext_mem_by_sqlid.sql
Enter value for sqlid: 46tx8ah1fx2un
Enter value for sid: 157
SYS
select  from t1 a,t1 b,t1 c where a.created<TO_DATE(20250821235152, 'YYYYMMDDHH24MISS') and a.last_ddl_time<TO_DATE(5152,
'YYYYMMDDHH24MISS') and a.object_id = b.object_id  and a.object_id = c.object_idPL/SQL procedure successfully completed.

这里通过脚本sql_fulltext_mem_by_sqlid.sql可以快速的获取到当前正在执行的SQL的绑定变量的值。

------------------作者介绍-----------------------
姓名:黄廷忠
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

http://www.zskr.cn/news/26234.html

相关文章:

  • 直方图
  • 昂贵多目标优化
  • 详细介绍:【多线程】无锁数据结构(Lock-Free Data Structures)是什么?
  • 军用混合现实头盔EagleEye的技术解析
  • --- 常见排序算法汇总 --- - 指南
  • Search-R1论文浅析与代码实现
  • 2025年10月仓储管理系统推荐榜:鸿链云仓领衔对比评测排行
  • 一款优秀笔记软件的自我修养 - 实践
  • NITEX:构建时尚新供应链的数字平台与技术架构
  • 电子人速囤!正点原子万用表,电烙铁,电桥镊子等商品!
  • 在Java中,如何实现封装
  • 2025年10月超声波清洗机厂家排行:十家主流企业深度评测
  • 详细介绍:rabbitMQ续谈
  • 2025年10月超声波清洗机厂家推荐榜:十强对比评测
  • 2025年10月长白山旅游度假酒店推荐:口碑榜与实景对比排行
  • Reactor 模式结合 epoll
  • 2025年10月不锈钢水箱厂家排行:十家对比评价
  • skynet.dispatch 使用详解
  • 元推理:自指生产力,自洽生产关系
  • skynet.start 的作用详细解析
  • 深入解析:计算机网络物理层
  • 第三次作业-结对项目
  • 【2025-10-20】连岳摘抄
  • 2025无人机在农业生态中的应用实践
  • 2025年10月代理记账公司实力榜:五强对比评测与合规选型指南
  • 2025年10月代理记账公司对比评测榜:秀之宇领衔全生命周期服务排名
  • 2025年国内中厚板供应推荐:全流程服务助力工程高效交付
  • 什么?就是工业视觉检测里的 “柔性”
  • 2025 年豆腐机厂家最新推荐榜权威发布:豆腐豆皮 / 豆干 / 成型机企业深度解析,附选型指南
  • TCP 和 UDP 协议的通信解析