【问题标题】:Command to know execution flow while the PL/SQL block is running? [duplicate]在 PL/SQL 块运行时知道执行流程的命令? [复制]
【发布时间】:2019-06-18 21:01:27
【问题描述】:

作为我项目的一部分,我运行了一个 PL/SQL 块来处理来自 12 个不同表的超过 13,00,000 条记录。

要知道执行流程我已经包含了SET SERVEROUTPUT ON 命令。

我的要求是知道块仍在运行时的执行流程,SET SERVEROUTPUT ON 只显示 PL/SQL 块执行后的流程。

SET SERVEROUTPUT ON ;
PL/SQL Block;

【问题讨论】:

标签: oracle plsql sqlplus


【解决方案1】:

您也可以使用包DBMS_APPLICATION_INFO,而不是使用专用的日志记录表和AUTONOMOUS_TRANSACTION。

BEGIN
   DBMS_APPLICATION_INFO.SET_MODULE('Starting at '||TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS'), 'Starting procedure');

   ... some PL/SQL code

   -- If you like you can set intermediate updates at any time:
   DBMS_APPLICATION_INFO.SET_ACTION('Still running...');

   ... some more PL/SQL code

   ... at the end you may reset application info 
   DBMS_APPLICATION_INFO.SET_MODULE(NULL, NULL);
END;

程序运行时可以通过

查询信息
SELECT SID, SERIAL#, USERNAME, OSUSER, MODULE, ACTION
from V$SESSION
where USERNAME = ...;

【讨论】:

  • 我无权更新程序,因为这是我项目中的生产活动。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
相关资源
最近更新 更多