zoukankan      html  css  js  c++  java
  • 10046 event 知多少

    10046 event 知多少

    2017年5月10日

    10:08

    1、在当前session级打开trace

        适用于SQL语句可以在新的session创建后再运行。

        在session级收集10046 trace:

        alter session set tracefile_identifier='10046';   --为便于区分 tracefile,最好做这一步

        alter session set timed_statistics = true;

        alter session set statistics_level=all;

        alter session set max_dump_file_size = unlimited;

        alter session set events '10046 trace name context forever,level 12';

        -- 执行需要被trace的SQL --

        select * from dual;

        exit;

        如果不退出当前session, 可以用以下命令关闭trace:

        alter session set events '10046 trace name context off';

        注意,如果session没有被彻底地关闭并且跟踪被停止了,某些重要的trace信息的可能会丢失。

    2、跟踪一个已经开始的进程

    如果需要跟踪一个已经存在session,可以用 oradebug连接到session上,并发起10046 trace。

        a. 首先,用某种方法找到需要被跟踪的session.

            例如,在SQL*Plus里,找出目标session的OS的进程ID(spid):

    select distinct  sess.sid     db_sid,

           sess.serial# db_serial#,

           process.pid     db_process_id,

           process.spid    os_process_id,

           sess.program

      from v$process process, v$session sess

     where sess.paddr = process.ADDR

       and sess.sid = &sid;

            注:SPID 是操作系统的进程标识符(os pid),PID 是Oracle的进程标识符(ora pid)。

    dbms_system.set_ev跟踪该会话                          

    dbms_system.set_ev(    si =>135,

                                        se =>137,

                                        le=>12,

                                        nm=> null )

    为该会话关闭sql跟踪

    dbms_system.set_ev(    si =>135,

                                        se =>137,

                                       ev    => 10046,               --注意此处跟代开跟踪不一样

                                        le=>0,                           --注意此处跟代开跟踪不一样

                                        nm=> null )

      

        b. 一旦找到OS PID,就可以用以下命令初始化跟踪:

           假设需要被跟踪的OSPID是9834. 以sysdba的身份登录到SQL*Plus并执行下面的命令:

    SQL>    connect / as sysdba

    SQL>    oradebug setospid 7090

    Oracle pid: 19, Unix process pid: 3050, image: oracle@Oracle11g (Q000)

    SQL>   0radebug unlimit

     o

    SQL>    oradebug event 10046 trace name context forever,level 12

    SQL>    oradebug tracefile_name;

    /u01/app/oracle/diag/rdbms/prod/prod/trace/prod_q000_3050.trc

    SQL>    oradebug event 10046 trace name context

    跟踪过程完成以后,关闭oradebug跟踪:

    SQL>  oradebug event 10046 trace name context off

     Note: 也可以通过oradebug使用 'setorapid'命令连接到一个session。

         c、下面的例中, 使用PID(Oracle进程标识符)(而不是SPID), oradebug命令将被改为:

    SQL>    connect / as sysdba

    SQL>    oradebug setorapid 29

    SQL>    oradebug unlimit

    SQL>    oradebug event 10046 trace name context forever,level 12

    SQL>    oradebug tracefile_name;

    /u01/app/oracle/diag/rdbms/prod/prod/trace/prod_q000_3050.trc

    SQL>    oradebug event 10046 trace name context off

    跟踪过程完成以后,关闭oradebug跟踪:

    SQL>  oradebug event 10046 trace name context off      

    dbms_monitor.session_trace_enable  (cliend_id=>'',    --只跟踪某种客户端标记的会话

    Waits=> true,

    Binds=>false)

         

    dbms_monitor.session_trace_disable(cliend_id=>'') --关闭跟踪某种客户端标记的会话

  • 相关阅读:
    Search for a Range 分类: Leetcode(查找) Leetcode(排序) 2015-04-10 15:34 23人阅读 评论(0) 收藏
    First Missing Positive 分类: Leetcode(排序) 2015-04-09 17:13 25人阅读 评论(0) 收藏
    Insertion Sort List 分类: Leetcode(排序) 2015-04-09 11:26 23人阅读 评论(0) 收藏
    Merge k Sorted Lists 分类: Leetcode(树) 2015-04-09 09:35 17人阅读 评论(0) 收藏
    Merge Two Sorted Lists 分类: Leetcode(排序) 2015-04-08 21:59 24人阅读 评论(0) 收藏
    Merge Sorted Array 分类: Leetcode(排序) 2015-04-08 21:52 24人阅读 评论(0) 收藏
    Sum Root to Leaf Numbers 分类: Leetcode(树) 2015-04-04 21:25 27人阅读 评论(0) 收藏
    计算机网络数据链路层次学习
    ArrayList总结及部分源码分析
    抽象类基本概念
  • 原文地址:https://www.cnblogs.com/iyoume2008/p/7160750.html
Copyright © 2011-2022 走看看