ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 10-17 跟踪多个会话

10-17 跟踪多个会话

原创 Linux操作系统 作者:diggger 时间:2012-09-27 12:38:32 0 删除 编辑
问题:
    你想要跟踪属于单个用户的多个会话。
方法:
    你可以通过使用dbms_monitor包的client_id_trace_enable过程跟踪属于某个用户的多个会话。在执行dbms_monitor.client_id_trace_enable过程之前,你必须通过使用dbms_session包设置该会话的client_identifier,如下所示:
SQL> execute dbms_session.set_identifier('SH');

    一旦你设置好,v$session视图中client_identifier列就填充了值。你可以通过执行以下语句确认v$session视图中client_identifier列的值:
SQL> select id, serial#, username from v$session where client_identifier = 'SH';

    现在你就可以执行dbms_monitor.client_id_trace_enable过程了:
SQL> execute dbms_monitor.client_id_trace_enable(client_id=>'SH',waits=>true,binds=>false);
    你也可以用以下命令禁止跟踪:
SQL> execute dbms_monitor.client_id_trace_disable(client_id='SH');

工作原理:
    当多个用户使用相同的Oracle账号连接时,设置client_identifier列使得可以跟踪多个会话,特别是使用连接池的应用程序。client_id_trace_enable过程收集指定客户ID的所有会话的统计信息。你必须指定的client_id不必属于当前活动的会话。默认情况下,waits和binds参数设置为false,你可以在执行client_id_trace_enable过程时添加这两个参数以跟踪它们的信息:
SQL> execute dbms_monitor.client_id_trace_enable('SH',true,true);
PL/SQL procedure successfully completed.
    你可以查询dba_enabled_traces视图查找使用client identifier执行过的跟踪状态。在该视图中,trace_type列显示出client_id的值,primary_id显示出client identifier的值。
SQL> select trace_type, primary_id, waits, binds from dba_enabled_traces;
TRACE_TYPE     PRIMARY_ID    WAITS     BINDS
-------------------      -----------------      ---------    ---------
CLIENT_ID           SH                       TRUE     TRUE

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/27795363/viewspace-745202/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-09-13

  • 博文量
    33
  • 访问量
    45476