每逢与遇到SQL相关性能,我们总是需要收集10046的,来查看和诊断问题。
因为10046真实的反应的SQL语句执行的时候的真实信息,解析,执行,获取的时间消耗,row source operation的具体情况。
具体等待事件,每个时间具体的时间消耗等等。希望下面的Case有一种就能帮助到您。

EVENT: 10046 "enable SQL statement tracing (including binds/waits)" (Doc ID 21154.1)
Interpreting Raw SQL_TRACE output (Doc ID 39817.1)
General SQL_TRACE / 10046 trace Gathering Examples (Doc ID 1274511.1)

==================
SQL性能常用:
所有版本
    10046 on session/system
    To start tracing:
    Alter session/system(慎用) set events '10046 trace name context forever, level 12';
    /* execute your selects to be traced */

To stop tracing
    Alter session/system(慎用) set events '10046 trace name context off';

11g以上
    1. event++在system级别指定sql_id,对新起的会话和当前的会话有效, 对其他已经存在的会话无效
         SQL> alter system set events 'sql_trace [sql: 5qcyrymp65fak] level=12';

注释:当前事件对当前的session和新创建的session有效,对已经存在的其他session无效。
         关闭 event ++:
         SQL>  alter system set events 'sql_trace [sql: 5qcyrymp65fak] off';

2. event ++ 指定某个process的sql_id
         SQL> oradebug setospid  <SPID>   <<<<<指定检测的会话的spid   <<<<<<<<<<<select spid from V$process, V$session where audsid=userenv('SESSIONID') and paddr=addr;
         SQL> oradebug unlimit
         SQL> oradebug tracefile_name
         SQL> oradebug event sql_trace [sql: 5qcyrymp65fak] level=12

关闭 event ++:
         SQL>  oradebug event sql_trace [sql: 5qcyrymp65fak] off

3. 不知道SQL_ID手动执行SQL收集10046
    SQL>connect username/password
    SQL>alter session set timed_statistics = true;
    SQL>alter session set statistics_level=all;
    SQL>alter session set max_dump_file_size = unlimited;
    SQL> select value from v$diag_info where name='Default Trace File';   <<<<在11g以上工作
    SQL> variable a1 <the type of ACCOUNT_TYPE_ID>;   <<<<<请执行类型
    SQL> exec :a1 := 123123或'abded';   <<<<<<<请设置数值或字符串
    SQL>alter session set events '10046 trace name context forever, level 12';
    SQL>UPDATE /*+ RESTRICT_ALL_REF_CONS */ "LBI_ODS"."T_O_CUSTOMER_ACCOUNT" SET
    "ACCOUNT_TYPE_ID" = :a1
    WHERE
    "ACCOUNT_NO" = 1234565;                                     <<<<<<<<<<<<执行sql重现问题
    SQL>alter session set events '10046 trace name context off';

==================
使用Trigger设置10046
    Use a Logon TriggerTo start tracing:
    create or replace trigger user_logon_trg
    after logon on database
    begin
    if USER = 'xxxx' then
    execute immediate
    'Alter session set events ''10046 trace name context forever, level 8''';
    end if;
    end;
    /

/* Login a new session as User 'xxxx' and execute your selects to be traced */

To stop tracing: via LogOff Trigger (needs to be created before logging off)
    create or replace trigger user_logoff_trg
    before logoff on database
    begin
    if USER = 'xxxx' then
    execute immediate
    'Alter session set events ''10046 trace name context off''';
    end if;
    end;
    /

==================
MMON的10046
    1. 请打开auto purge的trace?

begin
      dbms_monitor.serv_mod_act_trace_enable
               (service_name=>'SYS$BACKGROUND',
               module_name=>'MMON_SLAVE',
               action_name=>'Auto-Purge Slave Action');
    end;
    /

2. 请至少等待一天,请您明天查看时候auto purge被执行,并产生m00x trace文件包含10046

3. 关闭auto purge的trace
    begin
      dbms_monitor.serv_mod_act_trace_disable
               (service_name=>'SYS$BACKGROUND',
               module_name=>'MMON_SLAVE',
               action_name=>'Auto-Purge Slave Action');
    end;
    /

==================
Data pump 10046
    1. enable 10046 trace for DM/DW process

alter system set events 'sql_trace{process: pname=dw | pname=dm} level=12';

2. Please reproduce the issue, then add "TRACE=480300" in data pump importing command

3. Please upload data pump importing log and the generated DM/DW process trace

To disable the tracing by issuing:

alter system set events 'sql_trace {process : pname = dw | pname = dm} off';

==================
其他方式设置10046
    1. DBMS_SUPPORTTo start tracing:
       exec sys.dbms_support.start_trace ;
       /* execute your selects to be traced */

To stop tracing:
       exec sys.dbms_support.stop_trace ;
        Tracing from Another SessionThe examples below demonstrate how to trace session with SID=18 and Serial# =226 obtained from V$SESSION.

2. Using "dbms_system.SET_BOOL_PARAM_IN_SESSION"To start tracing:
       exec sys.dbms_system.SET_BOOL_PARAM_IN_SESSION(18, 226, 'sql_trace', TRUE);
       /* execute your selects to be traced */
       To stop tracing:
       exec sys.dbms_system.SET_BOOL_PARAM_IN_SESSION(18, 226, 'sql_trace', FALSE);

3. Using "dbms_system.set_ev"To start tracing:
       exec dbms_system.set_ev(18, 226, 10046, 12, '');

To stop tracing:
       exec dbms_system.set_ev(18, 226, 10046, 0, '');
    4. Using "dbms_system.set_sql_trace_in_session"To start tracing:
       exec dbms_system.set_sql_trace_in_session(18,226,TRUE);
       /* execute your selects to be traced */
       To stop tracing:
       exec dbms_system.set_sql_trace_in_session(18,226,FALSE);
    5. Using "sys.dbms_monitor"To start tracing:
       exec sys.dbms_monitor.session_trace_enable(session_id=>18,serial_num=>226, waits=>true, binds=>true);
       /* execute your selects to be traced */

To stop tracing:
       exec sys.dbms_monitor.session_trace_disable(session_id=>18,serial_num=>226);

 

http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_monitor.htm#CFAHBEAB
   CLIENT_ID_STAT_DISABLE Procedure
   CLIENT_ID_STAT_ENABLE Procedure
   CLIENT_ID_TRACE_DISABLE Procedure
   CLIENT_ID_TRACE_ENABLE Procedure
   DATABASE_TRACE_DISABLE Procedure
   DATABASE_TRACE_ENABLE Procedure
   SERV_MOD_ACT_STAT_DISABLE Procedure
   SERV_MOD_ACT_STAT_ENABLE Procedure
   SERV_MOD_ACT_TRACE_DISABLE Procedure
   SERV_MOD_ACT_TRACE_ENABLE Procedure
   SESSION_TRACE_DISABLE Procedure
   SESSION_TRACE_ENABLE Procedure

6. Using Oradebug (as SYS)To start tracing:
       oradebug setospid xxxx
       oradebug event 10046 trace name context forever, level 12;
       /* In the session being traced execute the selects  */

To stop tracing:
       oradebug event 10046 trace name context off ;

网罗收集10046的各种Case,方便trace信息的收集的更多相关文章

  1. 让Xcode的 stack trace信息可读

    让Xcode的 stack trace信息可读 昨天在写 iOS 代码的时候,调试的时候模拟器崩溃了.异常停在了如下整个 main 函数的入口处: int main(int argc, char *a ...

  2. Oracle的自动统计信息不收集直方图的信息

    Oracle的自动统计信息不收集直方图的信息 在oracle9i中,默认的统计信息收集是不收集直方图信息的,也就是说默认的MOTHOD_OPT模式为FOR ALL COLUMNS SIZE 1 在10 ...

  3. Oracle自动统计信息的收集原理及实验

    [日期:2014-11-21]来源:Linux社区  作者:stevendbaguo[字体:大 中 小] 从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATH ...

  4. JVM-垃圾收集算法、垃圾收集器、内存分配和收集策略

    对象已死么? 判断一个对象是否存活一般有两种方式: 1.引用计数算法:每个对象都有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1.计数为0时可以回收. 2.可达性分析算法(Reachab ...

  5. 当前机器的各种进程、服务信息的收集(win)

    当前机器的各种进程.服务信息的收集(win) 前言 我们在做渗透测试的过程中,遇到Windows系统的环境是最多的,然而在拿到一台Windows胸膛呢权限之后,我们要进行横向渗透测试或者纵向渗透测试, ...

  6. thinkphp 页面Trace信息

    调试模式并不能完全满足我们调试的需要,有时候我们需要手动的输出一些调试信息.除了本身可以借助一些开发工具进行调试外,ThinkPHP还提供了一些内置的调试工具和函数.例如,页面Trace功能就是Thi ...

  7. SQL Server 等待统计信息基线收集

    背景 我们随时监控每个服务器不同时间段的wait statistics ,可以根据监控信息大概判断什么时候开始出现异常,相当于一个wait statistics基线收集,还可以具体分析占比高的等待类型 ...

  8. 【MySQL】关于MySQL错误日志信息的收集

    为方便维护MySQL,写了个脚本用以提供收集错误信息的接口.这些错误信息来自与MySQL错误日志,而 通过grep mysql可以获取error-log的路径. #!/usr/bin/env pyth ...

  9. kali linux工具--信息批量收集工具theharvester

    在渗透测试早期阶段,安全人员往往需要从互联网快速获取目标的一些信息,以确认测试目标的概况.为了满足这个需求,Kali Linux提供了theharvester工具.该工具可以搜索引擎.社交网站获取目标 ...

随机推荐

  1. Redis笔记(三):Redis常用命令

    连接测试 连接本地服务器 语法 $ redis-cli 实例 启动 redis 客户端,打开终端并输入命令 redis-cli.该命令会连接本地的 redis 服务. $redis-cli redis ...

  2. 神经网络中的池化层(pooling)

    在卷积神经网络中,我们经常会碰到池化操作,而池化层往往在卷积层后面,通过池化来降低卷积层输出的特征向量,同时改善结果(不易出现过拟合).为什么可以通过降低维度呢? 因为图像具有一种“静态性”的属性,这 ...

  3. 面试题22:有序数组生成不同结构BST

    对于一个含有n个数的有序数组1~N,能够产生多少种不同结果的二叉搜素树BST? 如何生成这些不同结构的BST? 有序数组如何生成平衡二叉搜索树? class Solution { public: in ...

  4. Xshell基础入门

    启动 双击快捷方式,启动 新建回话 建立连接 在这里需要填写的是: 1. 连接名称 2. 服务器IP 3. 服务器端口(默认22) 填写完毕后,点击确定,保存配置,回到连接页面,可以看到多了一个测试服 ...

  5. Mybatis源码正确打开方式

    精心挑选要阅读的源码项目: 饮水思源——官方文档,先看文档再看源码: 下载源码,安装到本地,保证能编译运行: 从宏观到微观,从整体到细节: 找到入口,抓主放次,梳理核心流程: 源码调试,找到核心数据结 ...

  6. 控制台直接执行sql语句

    mysql -h127.0.0.1 -P3306 -uroot -paaccccccc databasename -e "select * from RegInfo where Plat ! ...

  7. wcf和webapi(转)

    WCF 1.这个也是基于SOAP的,数据格式是XML 2.这个是Web Service(ASMX)的进化版,可以支持各种各样的协议,像TCP,HTTP,HTTPS,Named Pipes, MSMQ. ...

  8. HTML5 number类型文本框step属性的验证机制——张鑫旭

    我在下一盘很大的棋,本文只是其中的一个棋子. 需要提前知道的: 目前而言,对step雄起的浏览器为IE10+, Chrome以及Opera浏览器. 需要预先知道number类型input的一些基本知识 ...

  9. Linux常用指令大全

    2017-03-25   16:35:42 刚开始学习Linux,由于记忆力有限,把平时常用的Linux命令整理出来,以便随时查阅:  linux 基本命令    ls     (list 显示当前目 ...

  10. javascript元素跟随鼠标在指定区域运动

    元素跟随鼠标在指定区域运动通常是用在商城图片的放大镜中,下面是完整的Demo: <!DOCTYPE html> <html lang="en"> <h ...