网罗收集10046的各种Case,方便trace信息的收集
每逢与遇到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信息的收集的更多相关文章
- 让Xcode的 stack trace信息可读
让Xcode的 stack trace信息可读 昨天在写 iOS 代码的时候,调试的时候模拟器崩溃了.异常停在了如下整个 main 函数的入口处: int main(int argc, char *a ...
- Oracle的自动统计信息不收集直方图的信息
Oracle的自动统计信息不收集直方图的信息 在oracle9i中,默认的统计信息收集是不收集直方图信息的,也就是说默认的MOTHOD_OPT模式为FOR ALL COLUMNS SIZE 1 在10 ...
- Oracle自动统计信息的收集原理及实验
[日期:2014-11-21]来源:Linux社区 作者:stevendbaguo[字体:大 中 小] 从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATH ...
- JVM-垃圾收集算法、垃圾收集器、内存分配和收集策略
对象已死么? 判断一个对象是否存活一般有两种方式: 1.引用计数算法:每个对象都有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1.计数为0时可以回收. 2.可达性分析算法(Reachab ...
- 当前机器的各种进程、服务信息的收集(win)
当前机器的各种进程.服务信息的收集(win) 前言 我们在做渗透测试的过程中,遇到Windows系统的环境是最多的,然而在拿到一台Windows胸膛呢权限之后,我们要进行横向渗透测试或者纵向渗透测试, ...
- thinkphp 页面Trace信息
调试模式并不能完全满足我们调试的需要,有时候我们需要手动的输出一些调试信息.除了本身可以借助一些开发工具进行调试外,ThinkPHP还提供了一些内置的调试工具和函数.例如,页面Trace功能就是Thi ...
- SQL Server 等待统计信息基线收集
背景 我们随时监控每个服务器不同时间段的wait statistics ,可以根据监控信息大概判断什么时候开始出现异常,相当于一个wait statistics基线收集,还可以具体分析占比高的等待类型 ...
- 【MySQL】关于MySQL错误日志信息的收集
为方便维护MySQL,写了个脚本用以提供收集错误信息的接口.这些错误信息来自与MySQL错误日志,而 通过grep mysql可以获取error-log的路径. #!/usr/bin/env pyth ...
- kali linux工具--信息批量收集工具theharvester
在渗透测试早期阶段,安全人员往往需要从互联网快速获取目标的一些信息,以确认测试目标的概况.为了满足这个需求,Kali Linux提供了theharvester工具.该工具可以搜索引擎.社交网站获取目标 ...
随机推荐
- JavaScript位移运算多个大于号的使用方法
JavaScript中的无符号位移运算符是用三个大于号来表示的 计算方法 例 100>>>2 100的二进制是 01100100 向右移2位后为 00011001 最后结果为25 1 ...
- centos下kubernetes+flannel部署(旧)
更合理的部署方式参见<Centos下Kubernetes+Flannel部署(新)> 一.准备工作 1. 三台centos主机 k8s(即kubernetes,下同)master: 10. ...
- DC综合及仿真验证和DFT测试
综合技术是提高设计产能的一个很重要的技术,没有综合技术的发展就不可能用HDL实现电路的设计,因为HDL开始是用来供电路仿真建模使用的,到了后来才把其中一部分子集作为可综合的语言,也就是R ...
- [笔记] Python入门---time模块
#__author:Mifen #date: 2018/12/6 import time ''' 时间戳是一种用于表示时间的方式.从1970年1月1日0时0分0秒0毫秒开始到指定时间的秒数.世间戳也叫 ...
- SpringMVC源码阅读:定位Controller
1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入门,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将通过源码分析,弄清楚Spr ...
- Ionic3 UI组件之 Gallery Modal
Gallery Modal可以理解为相册的预览界面.可以显示网络图片,也可以显示base64Image. 在这个例子中,我用来实现图片的预览功能. 相机拍照,或者相册选择图片后,用缩略图组件显示缩略图 ...
- C#:ORM--实体框架EF(entity framework)(1)
本文来自:http://www.cnblogs.com/xuf22/articles/5513283.html 一.什么是ORM ORM(Object-relational mapping),中文翻译 ...
- sql 数据库数据 批量判断修改
A表B表相关联 更新B表中的VisitWeek字段值 CCD_PartnerVisit 此为B表 Dell_FiscalWeek 此为A表 UPDATE CCD_PartnerVisit SET ...
- Java中反射和Unsafe破坏单例设计模式
有如下单例模式设计代码: class Singleton { private String info = "HELLO SHIT"; private static Singleto ...
- 常见排序算法总结 -- java实现
常见排序算法总结 -- java实现 排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间 ...