有用的其他信息包括用户,会话ID等。
#1 楼
大多数信息都可以在v $ session中使用...并且可以从v $ sql或v $ sqltext_with_newlines中获取SQL文本...这是我经常使用的查询格式-flight SQL,运行时间最长。
-- In Flight SQL
SELECT nvl(ses.username,'ORACLE PROC')||' ('||ses.sid||')' USERNAME,
SID,
MACHINE,
REPLACE(SQL.SQL_TEXT,CHR(10),'') STMT,
ltrim(to_char(floor(SES.LAST_CALL_ET/3600), '09')) || ':'
|| ltrim(to_char(floor(mod(SES.LAST_CALL_ET, 3600)/60), '09')) || ':'
|| ltrim(to_char(mod(SES.LAST_CALL_ET, 60), '09')) RUNT
FROM V$SESSION SES,
V$SQLtext_with_newlines SQL
where SES.STATUS = 'ACTIVE'
and SES.USERNAME is not null
and SES.SQL_ADDRESS = SQL.ADDRESS
and SES.SQL_HASH_VALUE = SQL.HASH_VALUE
and Ses.AUDSID <> userenv('SESSIONID')
order by runt desc, 1,sql.piece;
#2 楼
在这里找到好的答案。执行以下sql:
select x.sid
,x.serial#
,x.username
,x.sql_id
,x.sql_child_number
,optimizer_mode
,hash_value
,address
,sql_text
from v$sqlarea sqlarea
,v$session x
where x.sql_hash_value = sqlarea.hash_value
and x.sql_address = sqlarea.address
and x.username is not null;
如果输出不可读,请更改LINESIZE(从此处获取):
SET LINESIZE 20000
如果上述sql无法正常工作,则可能需要以sysdba身份登录:
sqlplus '/as sysdba'
评论
您与“好答案”的链接已死
–格拉特
18年5月4日在17:44
@Gerrat我将链接更新为缓存的存档。
–Clarkey
18年5月8日在9:18
评论
In Flight SQL是什么意思?
– toha
19 Mar 26 '19在2:59
进行中=正在运行在oracle数据库上,或者在这种情况下当前在v $ session中可用,并且status ='ACTIVE'
–大卫·曼(David Mann)
19年4月9日在17:49