Oracle中查看正在运行的SQL语句,怎么查看?
Oracle中查看正在运行的SQL语句,怎么查看?
我来答
添加附件
收藏
复制链接
微信扫码分享
在小程序上查看
分享
添加附件
问题补充
2条回答
默认
最新
如果不是锁,执行很快不太可能看得到。
select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode,
sess.MACHINE,
sess.PROGRAM,
s.SQL_FULLTEXT,
sess.LOGON_TIME,
sess.LOCKWAIT,
sess.STATUS,
sess.SQL_ID,
sess.LAST_CALL_ET,g.BLOCKING_SESSION
from v$locked_object lo,
dba_objects ao,
v$session sess,
v$sql s,
gv$session g
where ao.object_id = lo.object_id and lo.session_id = sess.sid and s.SQL_ID=sess.PREV_SQL_ID and sess.sid=g.sid;
如果是锁,这样就能看到是运行的SQL情况。
评论
有用 1
查正在运行的会话
select * from v$session
where username is not null and status = 'ACTIVE'
order by logon_time, sid;
可以得到 sql_address 和 sql_hash_value ,再带入下面这个sql进行查询,即可得目前正在执行的sql
select sql_text from v$sqltext_with_newlines
where address = hextoraw(:sql_address)
and hash_value = :sql_hash_value
order by piece
/* concatenate */
(v$sqltext_with_newlines 可以替换成 v$sqltext)
当然也可以把这两个视图直接关联起来查。
另外,如果是rac,注意两个视图都要换成"GV"开头的视图,并多加一个inst_id的关联条件
评论
有用 1回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏

