捕捉运行很久的SQL — 使用以下SQL语句可以识别并追踪在Oracle数据库中运行时间较长的SQL进程:
SELECT username, SID, opname, ROUND(sofar * 100 / totalwork, 0) || '%' AS progress, time_remaining, sql_text
FROM v$session_longops, v$sql
WHERE time_remaining > 0 AND sql_address = address AND sql_hash_value = hash_value;
这段代码将捕捉正在执行的SQL操作的进度,显示用户名(username)、会话ID(SID)、操作名称(opname)、完成进度(progress)、剩余时间(time_remaining),以及对应的SQL文本(sql_text)。
使用这段代码,可以高效监控数据库中长时间运行的SQL语句,帮助快速识别性能瓶颈,优化系统运行效率。