转:在v$session中设置module和action

2650阅读 0评论2013-12-13 zxszcaijin
分类:Oracle

在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
上一篇:转载:v$sysstat视图
下一篇:转:v$session