查看Oracle中正在执行和执行过的SQL语句,主要通过查询动态性能视图实现。以下是具体方法:
查看正在执行的SQL语句
通过v$session和v$sql关联查询,语句:
select s.sid,
s.serial#,
s.username,
s.status,
s.sql_id,
q.sql_text,
s.machine,
s.program
from v$session s
join v$sql q
on s.sql_id = q.sql_id
where s.status = 'ACTIVE'
and s.username is not null
order by s.sid;
![图片[1]-查看Oracle中正在执行和执行过的SQL语句-十一张](https://www.11zhang.com/wp-content/uploads/2026/01/3c0b4e437d20260119212904.png)
关键字段说明:
●sid/serial#:会话唯一标识
●sql_id:SQL语句唯一标识
●sql_text:正在执行的SQL文本(可能截断)
●status='ACTIVE':过滤活跃会话
●machine/program:客户端信息
select sql_fulltext from v$sql where sql_id = '53pmu7yf5x6vf';
![图片[2]-查看Oracle中正在执行和执行过的SQL语句-十一张](https://www.11zhang.com/wp-content/uploads/2026/01/9f21783e0a20260119214851.png)
查看执行过的SQL语句(历史记录)
select sql_id,sql_text,executions,
round(elapsed_time/1000000,2) as elapsed_sec,
round(cpu_time/1000000,2) as cpu_sec,
disk_reads,buffer_gets,last_active_time
from v$sqlarea
where executions > 0
order by last_active_time desc;
![图片[3]-查看Oracle中正在执行和执行过的SQL语句-十一张](https://www.11zhang.com/wp-content/uploads/2026/01/e76d5bbee020260119213711.webp)
说明:v$sqlarea存储共享池中缓存的SQL执行统计,实例重启或SQL被淘汰后数据会丢失,适合查看近期(几小时到几天内)执行的SQL语句。
查看最近10条执行最耗时的SQL
从Oracle数据库的共享池中检索执行时间最长的前10条SQL语句,这是性能诊断中常用的查询。
select *
from (select sql_id "SQL标识符", -- SQL语句的唯一标识符
sql_text "SQL文本", -- SQL文本(通常显示前1000个字符)
executions "次数", -- 该SQL语句总共被执行的次数
round(elapsed_time / 1000000, 2) "总耗时(秒)",
last_active_time "时间戳" -- 该SQL语句最后一次被执行的时间戳
from v$sqlarea
order by elapsed_time desc)
where rownum <= 10;
![图片[4]-查看Oracle中正在执行和执行过的SQL语句-十一张](https://www.11zhang.com/wp-content/uploads/2026/01/1cf2b8fb8620260119220335.png)
温馨提示:本文最后更新于
2026-01-19 22:07:58,某些文章具有时效性,若有错误或下载地址失效,请在文末评论区留言THE END




















暂无评论内容