首页 > 解决方案 > DBMS_APPLICATION_INFO.SET_ACTION 不起作用

问题描述

我在用

DBMS_APPLICATION_INFO.SET_ACTION 

指示当前正在执行过程的哪一部分。例如:

DBMS_APPLICATION_INFO.SET_ACTION(ACTION_NAME=>'1/9 CALCULATING SPACE AVAILABLE...');

只需在存储过程的不同点添加这些行,就可以轻松地查询 v$session 中的条目以获取信息并转发给用户。但是,如果我从 oracle 调度程序作业运行相同的过程,我不会在 v$session 中获得 ACTION_NAME 的条目。仅显示作业本身的详细信息。

有谁知道我如何解决这个问题,以生成与我手动执行程序时显示的相同状态指示器,而不是通过作业?

谢谢。

标签: oracleplsql

解决方案


Dbms_Session.Set_Identifier除了填充从 v$session 动态性能视图派生的信息之外,您还可以添加以下内容:

Declare
  i_action varchar2(1000):='1/9 CALCULATING SPACE AVAILABLE...';
Begin
  If ( i_action is not null ) Then
    Dbms_Application_Info.Set_Action( i_action );
    Dbms_Session.Set_Identifier( i_action );      
   End If;
End;

推荐阅读