在v$session中设置module和action
oracle中有一个包dbms_application_info,它可以把一些程序信息加入到v$session中。这样我们就可以通过查询v$session知道程序当前的一些信息。比如:当前执行的模块名、正在执行的命令等。
下例展示这个包的简单用法:
session 1:
SQL> select sid from v$mystat where rownum=1;
SID
----------
10
SQL> create or replace procedure proc1
2 as
3 begin
4 dbms_application_info.set_action('PROC1');
5 for i in 1..50 loop
6 dbms_lock.sleep(1);
7 end loop;
8 dbms_application_info.set_action(NULL);
9 end;
10 /
Procedure created.
SQL> create or replace procedure proc2
2 as
3 begin
4 dbms_application_info.set_action('PROC2');
5 for i in 1..30 loop
6 dbms_lock.sleep(2);
7 end loop;
8 dbms_application_info.set_action(NULL);
9 end;
10 /
Procedure created.
SQL> create or replace procedure proc_main
2 as
3 begin
4 dbms_application_info.set_module('PROC_MAIN','MAIN');
5 dbms_lock.sleep(20);
6 proc1;
7 proc2;
8 dbms_application_info.set_module('PROC_MAIN',NULL);
9 end;
10 /
Procedure created.
SQL> exec proc_main;
session 2:
SQL> select sid,serial#,module,action from v$session where sid=10;
SID SERIAL# MODULE ACTION
---------- ---------- ---------- ----------
10 26 PROC_MAIN MAIN
......
SQL> select sid,serial#,module,action from v$session where sid=10;
SID SERIAL# MODULE ACTION
---------- ---------- ---------- ----------
10 26 PROC_MAIN PROC1
......
SQL> select sid,serial#,module,action from v$session where sid=10;
SID SERIAL# MODULE ACTION
---------- ---------- ---------- ----------
10 26 PROC_MAIN PROC2
......
SQL> select sid,serial#,module,action from v$session where sid=10;
SID SERIAL# MODULE ACTION
---------- ---------- ---------- ----------
10 26 PROC_MAIN
阅读(2527) | 评论(0) | 转发(0) |