可以通过以下方法查看 Oracle 存储过程执行状态:使用 DBMS_APPLICATION_INFO 包查看当前正在执行的操作。使用 V$SESSION_LONGOPS 视图查看正在执行的存储过程详细信息。使用 V$SQL_EXECUTE 视图查看指定存储过程相关的执行信息。

如何查看 Oracle 存储过程执行到哪个位置
在 Oracle 数据库中,可以通过以下方法查看存储过程执行到哪个位置:
使用 DBMS_APPLICATION_INFO 包
SELECT action FROM DBMS_APPLICATION_INFO;
结果将显示当前正在执行的操作,例如:
- BEGIN - 存储过程开始执行
- END - 存储过程执行结束
- EXECUTE STATEMENT - 正在执行语句
- COMMIT - 正在提交事务
使用 V$SESSION_LONGOPS 视图
SELECT sid, event, p1text, rows_processed, elapsed_seconds FROM V$SESSION_LONGOPS WHERE event LIKE '%EXECUTE PL/SQL%' AND sid = <会话 ID>;
结果将显示当前正在执行的存储过程的详细信息,包括:
- sid - 会话 ID
- event - 事件类型
- p1text - 正在执行的语句
- rows_processed - 已处理的行数
- elapsed_seconds - 已执行的时间(以秒为单位)
使用 V$SQL_EXECUTE 视图
SELECT sql_text, row_count, elapsed_time FROM V$SQL_EXECUTE WHERE sql_text LIKE '%<存储过程名称>%' AND sid = <会话 ID>;
结果将显示与指定存储过程相关的执行信息,包括:
- sql_text - 存储过程的 SQL 文本
- row_count - 受影响的行数
- elapsed_time - 已执行的时间(以微秒为单位)
示例
假设有一个名为 "GET_EMPLOYEES" 的存储过程。要查看其执行状态,可以使用以下查询:
SELECT sid, event, p1text FROM V$SESSION_LONGOPS WHERE event LIKE '%EXECUTE PL/SQL%' AND p1text LIKE 'GET_EMPLOYEES%';
结果将显示以下信息:
sid event p1text 123 EXECUTE PL/SQL GET_EMPLOYEES(...)
这表明存储过程 "GET_EMPLOYEES" 正在执行,并且会话 ID 为 123。










