DBMS_APPLICATION_INFO
2016-02-21 20:47
274 查看
官方文档:http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_appinf.htm#ARPLS003
https://oracle-base.com/articles/8i/dbms_application_info#end_to_end_tracing_java
DBMS_APPLICATION_INFO允许应用程序向视图v$session,v$session_longops添加统计信息用于追踪程序执行情况。
应用程序开始的时候总是应该注册module和action,用以标识某块和初始化Action,相关SQL:
ASH中Top Services/modules统计了在抽样会话活动中占较高百分比的SERVICE或者MODULE,AWR中SQL的统计信息中就会标识SQL所属的module。
为了监控操作时间较长的程序,可以通过SET_SESSION_LONGOPS记录执行情况,通过视图V$SESSION_LONGOPS查询具体的执行情况:
如下SQL可以查看任务的执行情况及执行进度:
https://oracle-base.com/articles/8i/dbms_application_info#end_to_end_tracing_java
DBMS_APPLICATION_INFO允许应用程序向视图v$session,v$session_longops添加统计信息用于追踪程序执行情况。
declare v_module varchar2(2000); v_action varchar2(2000); v_client_info varchar2(2000); begin dbms_application_info.set_module(module_name => 'TestModule', action_name => 'Action_start'); dbms_application_info.set_action(action_name => 'Action01'); dbms_application_info.set_client_info(client_info => 'Client_info01'); dbms_application_info.read_module(module_name => v_module, action_name => v_action); dbms_output.put_line(v_module); --TestModule dbms_output.put_line(v_action); --Action01 dbms_application_info.read_client_info(client_info => v_client_info); dbms_output.put_line(v_client_info); --Client_info01 end;
应用程序开始的时候总是应该注册module和action,用以标识某块和初始化Action,相关SQL:
select sid from v$mystat; select vs.module, vs.action, vs.client_info from v$session vs where vs.sid = 36
ASH中Top Services/modules统计了在抽样会话活动中占较高百分比的SERVICE或者MODULE,AWR中SQL的统计信息中就会标识SQL所属的module。
为了监控操作时间较长的程序,可以通过SET_SESSION_LONGOPS记录执行情况,通过视图V$SESSION_LONGOPS查询具体的执行情况:
DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS ( rindex IN OUT BINARY_INTEGER, slno IN OUT BINARY_INTEGER, --oracle内部使用 op_name IN VARCHAR2 DEFAULT NULL, -- 定义任务名称,最大64个字节 target IN BINARY_INTEGER DEFAULT 0, --对应视图的target context IN BINARY_INTEGER DEFAULT 0, --对应视图的context sofar IN NUMBER DEFAULT 0, --对应视图的sofar totalwork IN NUMBER DEFAULT 0, --对应视图的totalwork target_desc IN VARCHAR2 DEFAULT 'unknown target', --对应视图的total_desc,最大32个字节 units IN VARCHAR2 DEFAULT NULL) --最大32个字节 set_session_longops_nohint constant BINARY_INTEGER := -1;
declare v_rindex binary_integer; v_slno binary_integer; v_sofar number := 0; v_op_name varchar2(64) := 'batch_load'; v_totalwork number := 10; v_target_desc varchar2(32) := 'rows processing'; begin v_rindex := dbms_application_info.set_session_longops_nohint; --在视图v$session_longops中开始新的一行 while v_sofar < 10 loop dbms_lock.sleep(10); --模拟长时间任务 v_sofar := v_sofar + 1; --模拟任务执行进度 dbms_application_info.set_session_longops(rindex => v_rindex, slno => v_slno, --oracle内部使用 op_name => v_op_name, sofar => v_sofar, --对应视图的sofar totalwork => v_totalwork, --对应视图的totalwork target_desc => v_target_desc); end loop; end;
如下SQL可以查看任务的执行情况及执行进度:
select sid, opname, target_desc, sofar, totalwork, units from v$session_longops;
相关文章推荐
- iOS进阶之旅-视图控制器控制与转换
- 关于微信公众平台接口的开发
- WebView
- Android 5.0新特性RecycleView的基本使用
- Android之layout_gravity与gravity解析
- #Android学习#onActivityResult直接回调问题
- Android中Activity启动模式全面解析
- 详解Android Studio
- [置顶] Unity跨平台读取文件(txt,csv,xml等)
- [Android]动态加载/热部署框架汇总
- Android之layout_weight解析
- Android中进行流量统计
- Swift中的UIKit重力学
- Android利用ViewPager实现Tab
- iOS请求数据两种方式(GET、POST)
- window BIOS设置硬盘启动模式
- SWIFT 懒加载
- 单点登录cas常见问题(九) - android app怎么接入cas单点登录系统?
- Android中Shape的使用
- unity, instantiate一个实例后,先指定parent,再指定position