it编程 > 数据库 > MsSqlserver

Oracle 查看后台正在执行的 SQL 语句(最新推荐)

17人参与 2025-07-16 MsSqlserver

在 oracle 数据库中,要查看后台正在执行的 sql 语句,可以通过查询动态性能视图(dynamic performance views)或使用监控工具来实现。

1. 查询动态性能视图

(1) 查看当前活跃会话及其执行的 sql

使用 v$session 和 v$sql 视图关联查询,获取正在执行的 sql 信息:

select 
    s.sid, s.serial#,
    s.username, 
    s.status,
    s.sql_id, 
    s.prev_sql_id,
    q.sql_text,
    s.program,
    s.machine,
    s.logon_time
from 
    v$session s
left join 
    v$sql q on s.sql_id = q.sql_id
where 
    s.status = 'active'   -- 筛选活跃会话
    and s.type != 'background'  -- 排除后台进程
    and s.sql_id is not null;

(2) 查看长时间运行的 sql 操作

使用 v$session_longops 监控长时间运行的操作(如全表扫描、索引重建等)

select 
    sid, serial#,
    opname, 
    target,
    sofar, 
    totalwork,
    round(sofar / totalwork * 100, 2) as progress_pct,
    elapsed_seconds,
    time_remaining
from 
    v$session_longops
where 
    time_remaining > 0;  -- 仅显示未完成的操作

2. 查询 sql 执行详细信息

(1) 通过 v$sqlarea 查看完整的 sql 文本

select 
    sql_id, 
    sql_text,
    executions,
    elapsed_time / 1000000 as elapsed_sec,
    cpu_time / 1000000 as cpu_sec,
    disk_reads,
    buffer_gets
from 
    v$sqlarea
where 
    sql_id = '<your_sql_id>';  -- 替换为实际的 sql_id

(2) 查看 sql 执行计划

通过 v$sql_plan 分析 sql 的执行计划:

select 
    * 
from 
    v$sql_plan 
where 
    sql_id = '<your_sql_id>';

 3. 使用 oracle enterprise manager (oem)

oracle 提供的图形化工具 enterprise manager (oem) 可以直观监控 sql 执行:

  1. 登录 oem 控制台。

  2. 导航到 performance > sql monitoring

  3. 查看实时 sql 执行的详细信息,包括资源消耗、执行计划等。

4. 使用 active session history (ash)

通过 v$active_session_history 查询历史活动会话信息(采样频率为每秒一次):

select 
    sql_id,
    session_id,
    session_serial#,
    sample_time,
    event,
    wait_time
from 
    v$active_session_history
where 
    sql_id is not null
order by 
    sample_time desc;

快速定位问题 sql

-- 查看消耗最多 cpu 的 sql
select 
    sql_id,
    sql_text,
    executions,
    cpu_time / 1000000 as cpu_sec,
    elapsed_time / 1000000 as elapsed_sec
from 
    v$sqlarea
order by 
    cpu_time desc
fetch first 10 rows only;

到此这篇关于oracle 查看后台正在执行的 sql 语句的文章就介绍到这了,更多相关oracle查询正在执行的sql内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

SQL中FIND_IN_SET的简单使用详解

07-16

Postgres数据库安装、配置、使用DBLink的实例详解

07-15

PostgreSQL的扩展 dblink及安装使用方法

07-15

sql语句中数据库别名命名和查询问题解析

07-15

PostgreSQL数据库配置SSL操作的实现方法

07-17

PostgreSQL主从搭建的实现步骤

07-17

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论