Oracle中查看正在运行的SQL进程

本文提供了一段Oracle SQL查询代码,用于展示全进程列表,包括用户名、机器名及SQL语句全文,通过连接v$session和v$sql_area视图实现。

Oracle show full processlist

 

复制代码代码如下:


set linesize 400;
set pagesize 400;
set long 4000;
col SQL_FULLTEXT format a100;
col machine format a25;
col username format a15;
SELECT a.username,a.machine, b.sql_id, b.SQL_FULLTEXT
FROM v$session a, v$sqlarea b
WHERE a.sql_address = b.address
    AND a.SQL_HASH_VALUE = b.HASH_VALUE;

Oracle 数据库中,查看当前正在执行的 SQL 语句可以通过查询动态性能视图来实现。以下是一些常用的方法和 SQL 查询语句。 ### 查看当前正在执行的 SQL 语句 Oracle 提供了多个动态性能视图,可以用来查看数据库的运行状态和当前活动。以下是几个常用的视图和对应的查询方法: #### 1. 使用 `V$SESSION` 和 `V$SQL` 视图结合查询 通过 `V$SESSION` 视图可以获取当前所有会话的信息,而 `V$SQL` 视图则包含了与 SQL 执行相关的详细信息。两者结合可以查看当前正在执行的 SQL 语句。 ```sql SELECT s.sid, s.serial#, s.username, s.status, q.sql_text FROM v$session s JOIN v$sql q ON s.sql_address = q.address AND s.sql_hash_value = q.hash_value WHERE s.status = 'ACTIVE'; ``` 此查询将返回当前处于活跃状态的会话及其正在执行的 SQL 语句[^2]。 #### 2. 使用 `V$PROCESS` 和 `V$SESSION` 结合查询 除了 SQL 语句本身,还可以通过 `V$PROCESS` 视图获取更多关于操作系统进程的信息,例如进程 ID(PID)等。 ```sql SELECT p.spid AS os_pid, s.sid, s.serial#, s.username, q.sql_text FROM v$process p JOIN v$session s ON p.addr = s.paddr JOIN v$sql q ON s.sql_address = q.address AND s.sql_hash_value = q.hash_value WHERE s.status = 'ACTIVE'; ``` 该查询将返回当前活跃会话的 SQL 语句以及对应的操作系统进程 ID,方便进一步操作或监控。 #### 3. 使用 `V$SQL` 视图直接查询最近执行的 SQL 语句 如果需要查看最近一段时间内执行过的 SQL 语句,可以使用 `V$SQL` 视图,并按时间排序。 ```sql SELECT sql_text, last_active_time FROM v$sql WHERE last_active_time IS NOT NULL ORDER BY last_active_time DESC; ``` 此查询将返回最近执行过的 SQL 语句,并按照执行时间降序排列[^3]。 ### 注意事项 - 在执行上述查询时,需要确保具有相应的权限,例如 `SELECT` 权限对 `V$SESSION`、`V$SQL` 等视图。 - 查询结果中的 `SID` 和 `SERIAL#` 可以用于识别特定的会话,以便进行进一步的操作,如终止会话。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值