ORACLE数据库巡检SQL脚本--21、正在执行的长耗时操作

该脚本用于监控Oracle数据库中正在执行的长耗时操作(如大表导入、索引重建、批量数据处理等),展示操作进度、预计剩余时间及对应的SQL文本,是定位长耗时任务、排查业务阻塞的核心工具。

一、sql脚本

sql 复制代码
SELECT USERNAME,
       SID,
       OPNAME,
       ROUND((SOFAR * 100 / TOTALWORK), 0) || '%' AS PROGRESS,
       TIME_REMAINING,
       SQL_TEXT
  FROM V$SESSION_LONGOPS, V$SQL
 WHERE TIME_REMAINING <> 0
       AND SQL_ADDRESS = ADDRESS
       AND SQL_HASH_VALUE = HASH_VALUE;

二、脚本说明

1、使用场景

  • 日常巡检:监控数据库中正在执行的长耗时任务,提前发现性能风险;
  • 故障排查:业务操作阻塞、响应超时时,定位正在运行的长耗时SQL;
  • 变更验证:索引重建、数据迁移、批量导入等运维操作时,实时监控进度;
  • 容量规划:分析长耗时任务的资源消耗模式,为硬件扩容提供依据。

2、字段说明

字段名 说明
USERNAME 执行长耗时操作的数据库用户名,用于定位业务归属
SID 执行操作的会话ID,用于后续终止异常会话
OPNAME 操作名称(如INDEX BUILDTABLE SCANDATA LOAD),识别操作类型
PROGRESS 操作完成百分比,反映任务执行进度
TIME_REMAINING 预计剩余时间(单位:秒),评估任务结束时间
SQL_TEXT 对应的SQL语句文本,定位具体业务/运维操作

三、注意事项

查询结果出现以下情况表示存在问题:

  1. 核心业务SQL长时间运行:如交易、查询类SQL运行时间超过10分钟,代表业务操作异常;
  2. TIME_REMAINING持续过高:预计剩余时间超过3600秒(1小时),说明任务耗时远超预期;
  3. PROGRESS长时间停滞:操作进度持续1小时无变化,代表任务可能异常阻塞或死锁;
  4. 非预期的长耗时操作:如未报备的批量数据修改、索引重建等,可能是误操作或恶意行为。

四、补充说明

1、异常的影响

  • 资源竞争加剧:长耗时操作会持续占用CPU、IO、临时表空间等资源,导致其他业务SQL性能恶化;
  • 业务阻塞风险:若长耗时操作持有锁,会引发其他会话阻塞,导致核心业务功能中断;
  • 数据一致性风险:异常停滞的长任务可能导致事务未提交,引发数据不一致或回滚耗时过长;
  • 用户体验下降:核心业务SQL长时间运行会导致业务操作超时,影响用户体验。

2、处理建议

  1. 监控与等待(正常长任务):若为报备的运维操作(如索引重建),可持续监控进度,等待任务完成;

  2. 终止异常会话 :若任务异常停滞或为误操作,可通过SID终止会话(需谨慎评估影响):

    sql 复制代码
    ALTER SYSTEM KILL SESSION 'SID, SERIAL#' IMMEDIATE;
  3. 优化长运行SQL:对业务类长耗时SQL进行优化(如添加索引、拆分批量任务、调整执行计划);

  4. 配置告警规则 :对TIME_REMAINING>3600的任务配置告警,提前发现异常长任务;

  5. 资源隔离:将运维类长任务调度到业务低峰期执行,减少对核心业务的影响。

相关推荐
Irene19911 分钟前
(课堂笔记)Oracle:场景判断(CASE WHEN)、集合运算、EXISTS、行列转换
oracle
薛定谔的悦28 分钟前
共享数据总线(DPR)设计模式——嵌入式系统的“内存数据库”
jvm·数据库·设计模式
程序猿online33 分钟前
本地mysql密码重置
数据库·mysql
四维迁跃34 分钟前
如何排查SQL存储过程死锁_分析死锁日志与索引优化
jvm·数据库·python
m0_7411733334 分钟前
如何检测SQL注入风险_利用模糊测试技术发现漏洞
jvm·数据库·python
ffqws_42 分钟前
MyBatis 动态 SQL 详解:从原理到实战
java·sql·mybatis
2401_8463395644 分钟前
CSS如何解决Less与CSS兼容性问题_通过配置文件实现平滑过渡与混合开发
jvm·数据库·python
qq_413847401 小时前
CSS如何控制全屏显示的元素样式
jvm·数据库·python
云动课堂1 小时前
【运维实战】MySQL 8.0 数据库 · 一键自动化部署方案 (适配银河麒麟 V10 / 龙蜥 8 / Rocky Linux 8 / CentOS 8)
linux·运维·数据库
阿正呀1 小时前
CSS粘性定位不生效怎么办_检查父元素高度与overflow属性设置
jvm·数据库·python