注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

沧海,桑田,一念之间!

The future is in your hands!还有什么比坚持更重要!

 
 
 

日志

 
 
关于我

一个有着狂野的梦想的人! 理想的现实派,现实的理想主义者! 喜欢计算机,新技术。

网易考拉推荐

dbms_application_info的应用  

2014-02-24 10:49:23|  分类: oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在处理大量数据的时候,我们有时候希望能看到处理进度,以便了解具体还有多久能执行完成。
通过异步打印进度能完成这个任务。不过这里主要介绍dbms_application_info包,使用它来对会话信息进行一些设置,然后从会话信息中了解到执行进度。

dbms_application_info包主要用于读取或者设置会话的信息。比如:客户端信息、模块信息、执行的动作等。

具体看来示例:

CREATE OR REPLACE PROCEDURE ZX_LXJ_TEST
IS
v_id mytype.goodsid;
v_goodsname mytype.goodsname;
v_num number(10);
v_start_time pls_integer;
v_sid number(10);
BEGIN
v_id := 1;
v_num := 1;
v_start_time := dbms_utility.get_time ;

select sid into v_sid
from sys.v_$session where audsid = userenv('sessionid');

dbms_output.put_line('My sid is' || v_sid);

dbms_application_info.set_client_info('info_test_client');
dbms_application_info.set_module('Start runing', (dbms_utility.get_time - v_start_time) ||'s used.');

for c in(select goodsid,rowid from zx_lxj_test_1) loop
update zx_lxj_test_1
set goodsid = goodsid +1
where rowid = c.rowid;

v_num := v_num + 1;

if mod(v_num,1000)=0 then
dbms_application_info.set_module('proc is runing.'||v_num||'rows proccessed.' ,'0ms used.');
end if;
end loop;

dbms_application_info.set_module('proc is end.'||v_num||'rows proccessed.' ,'.');


END;
/


实施
上述的存储过程中,将会话的客户端信息设置为info_test_client。
同时,每更新1000行时,就将最新处理的行数信息写入module中,将处理所用时间写入action中。
这样,我们在另一个客户端,通过查看该会话信息,就能很直观的了解到该存储过程的运行情况。
以下是另一个客户端的查询到的会话信息:

SQL> SELECT sid,client_info, MODULE
2 FROM v$session
3 WHERE sid = 504;

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is end.489121rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is runing.37000rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is runing.51000rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is runing.60000rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is runing.72000rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is runing.85000rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is runing.96000rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is runing.108000rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is runing.120000rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is runing.132000rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is runing.148000rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is runing.180000rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is runing.194000rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is runing.208000rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is runing.222000rows proccessed.

SQL> /

SID CLIENT_INFO MODULE
---------- -------------------- ----------------------------------------
504 info_test_client proc is end.489121rows proccessed.

这里可以看到,随着ZX_LXJ_TEST的运行,我们不停的查询对应的会话信息,会发现处理行数在不停的变化,直到存储过程结束。变成了proc is end.489121rows proccessed.



  评论这张
 
阅读(639)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017