oracle查询block会话,oracle会话阻塞查询脚本及对应字段含义
时间: 2023-08-09 12:12:24 浏览: 54
查询Oracle会话阻塞情况可以使用以下脚本:
```
SELECT s1.SID || ',' || s1.SERIAL# AS blocker, s2.SID || ',' || s2.SERIAL# AS waiter, l.TYPE, l.ID1, l.ID2, l.CTIME
FROM V$LOCK l, V$SESSION s1, V$SESSION s2
WHERE s1.SID = l.SID AND s2.SID = l.BLOCKING_SESSION AND l.TYPE = 'TM'
ORDER BY l.CTIME;
```
该脚本会返回阻塞会话的SID和SERIAL#,以及被阻塞的会话的SID和SERIAL#,锁的类型(如TM表示事务锁),以及锁的对象ID1和ID2,以及锁的创建时间。
其中,SID和SERIAL#是会话的标识符,ID1和ID2是锁的对象ID(通常是表或索引的ID)。CTIME是锁的创建时间。
另外,如果想要查询某个会话的信息,可以使用以下脚本:
```
SELECT s.sid, s.serial#, s.username, s.osuser, s.machine, s.program, s.sql_id, s.sql_child_number, s.status
FROM v$session s
WHERE s.sid = <sid>;
```
该脚本会返回指定会话的SID、SERIAL#、用户名、操作系统用户、客户端机器名、客户端程序名、当前执行的SQL语句ID和子程序ID、以及会话状态。
相关问题
oracle 查询哪些会话正在使用并行处理
您可以使用以下SQL查询来查找正在使用并行处理的会话:
```
SELECT s.sid, s.serial#, s.username, s.osuser, s.status, s.machine, s.program, s.sql_id, t.used_urec, t.start_time, t.elapsed_time
FROM v$session s, V$PX_SESSION t
WHERE s.saddr = t.saddr;
```
此查询将返回所有正在使用并行处理的会话的详细信息,包括会话ID、用户名、操作系统用户名、会话状态、机器名称、程序名称、SQL ID、使用的并行资源、开始时间和已经经过的时间。
oracle会话查询
以下是Oracle会话查询的方法:
1.查询当前所有会话
```sql
SELECT * FROM v$session;
```
2.查询当前所有活跃的会话
```sql
SELECT * FROM v$session WHERE status = 'ACTIVE';
```
3.查询当前所有等待事件的会话
```sql
SELECT * FROM v$session WHERE wait_class != 'Idle';
```
4.查询当前所有锁定的会话
```sql
SELECT * FROM v$session WHERE blocking_session IS NOT NULL;
```
5.查询当前所有正在执行的SQL语句
```sql
SELECT s.sid, s.serial#, s.username, s.osuser, s.program, s.machine, s.terminal, s.sql_id, t.sql_text
FROM v$session s, v$sqltext_with_newlines t
WHERE s.sql_id = t.sql_id
AND s.status = 'ACTIVE'
AND s.username IS NOT NULL;
```