DBMS_APPLICATION_INFO包可与Trace和SQL跟踪工具一起使用,以记录数据库中正在执行的模块或事务的名称,以便后续跟踪模块的性能以及调试使用。

应用程序允许系统管理员和性能调整专家按模块跟踪性能。系统管理员还可以使用此信息来跟踪模块的资源使用情况。

PolarDB提供了以下几种DBMS_APPLICATION_INFO子程序供您使用。

  • READ_CLIENT_INFO:读取当前会话中client_info字段的值。
  • READ_MODULE:读取当前会话中模块和操作字段的值。
  • SET_ACTION:设置当前模块中当前动作的名称。
  • SET_CLIENT_INFO:设置会话的client_info字段。
  • SET_MODULE:将当前正在运行的模块的名称设置为新模块。

READ_CLIENT_INFO

语法
DBMS_APPLICATION_INFO.READ_CLIENT_INFO (
   client_info OUT VARCHAR2);
参数
参数 描述
client_info 当前会话提供给SET_CLIENT_INFO过程的最后一个客户信息值。

READ_MODULE

语法
DBMS_APPLICATION_INFO.READ_MODULE ( 
   module_name OUT VARCHAR2, 
   action_name OUT VARCHAR2);
参数
参数 描述
module_name 当前会话通过调用SET_MODULE将模块名称设置为的最后一个值。
action_name 当前会话通过调用SET_MODULE或SET_MODULE将模块名称设置为的最后一个值。

SET_ACTION

语法
DBMS_APPLICATION_INFO.SET_ACTION (
   action_name IN VARCHAR2);
参数
参数 描述
action_name 当前模块中当前操作的名称。当前操作终止时,如果有下一个操作,则使用下一个操作的名称调用此过程;如果没有下一个操作将调用NULL。

长度超过64个字节的名称将被截断。

SET_CLIENT_INFO

语法
DBMS_APPLICATION_INFO.SET_CLIENT_INFO (
   client_info IN VARCHAR2);
参数
参数 描述
client_info 提供有关客户端应用程序的任何其他信息。

SET_MODULE

语法
DBMS_APPLICATION_INFO.SET_MODULE ( 
   module_name IN VARCHAR2, 
   action_name IN VARCHAR2);
参数
参数 描述
module_name 当前正在运行的模块的名称。 当前模块终止时,如果有新模块,则以新模块的名称调用此过程;否则,则以NULL调用。 长度超过64个字节的名称将被截断。
action_name 当前模块中当前操作的名称。 如果您不想指定操作,则此值应为NULL。 长度超过64个字节的名称将被截断。

示例

select pid  ,client_info,module,action from polar_get_app_info;

exec dbms_application_info.set_client_info('client2');
exec dbms_application_info.set_module('module2','action');
exec dbms_application_info.set_action('action2');

select pid  ,client_info,module,action from polar_get_app_info;

 DECLARE
 _clinent TEXT;
 _mod_name TEXT;
 _act_name TEXT;
 BEGIN

 dbms_application_info.read_client_info(_clinent);
 dbms_application_info.read_module(_mod_name,_act_name);
 raise notice 'client_info is : "%", module value is "%", action value is "%"', _clinent, _mod_name, _act_name;
 END;