如何理解trace信息的收集

分类:编程技术 时间:2024-02-20 15:58 浏览:0 评论:0
0
本文向您展示如何理解跟踪信息的收集。内容简洁易懂。绝对会让你眼前一亮。希望您能从本文的详细介绍中有所收获。

每当遇到SQL相关的性能问题时,我们总是需要收集10046来查看和诊断问题。
因为10046真实反映了SQL语句执行时的真实信息,解析、执行、获取的时间消耗以及行源操作的具体情况。
具体等待事件、每次具体消耗时间等,希望以下案例可以帮助您。

事件:10046“启用 SQL 语句跟踪(包括绑定/等待)”(文档 ID 21154.1)
解释原始 SQL_TRACE 输出(文档 ID 39817.1)
常规 SQL_TRACE / 10046 跟踪收集示例(文档 ID 1274511.1)

==================
常用的 SQL 性能:
所有版本
会话/系统上的 10046
要开始跟踪:
更改会话/系统(谨慎使用)设置事件 '10046 永远跟踪名称上下文,级别 12';
/* 执行您的选择要跟踪 */

要停止跟踪
更改会话/系统(谨慎使用)设置事件“10046 跟踪名称上下文关闭”;


11g以上
1.event++在系统级别指定sql_id,对于新会话和当前会话有效,其他已有会话无效。对新创建的会话有效,对其他已有的会话无效。
    Close event ++:
     SQL> alter system set events 'sql_trace [sql: 5qcyrymp65fak] off';

  2. event ++指定进程的sql_id
/> /> /> /> sql> ORADEBUG SETOSPID <<<<< <指定检测到的会话为测试会话,select spid from v$processes,v$session where angsid = useErenv('sessionidid')和 paddr = addr;BSP; SQL> ORADEBUG 事件 SQL_TRACE [SQL: 5QCyryMP65FAK] level = 12

关闭EVENT ++:
SQL> Oradebug Event SQL_TRACE [SQL: 5QCyrymp65fa K] OFF

3. 手动执行SQL收集10046,无需知道 SQL_ID
SQL>连接用户名/密码
SQL>alter session set timed_statistics = true;
SQL>alter session set stats_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> 变量a1 ; <<<<<请执行类型
SQL> exec :a1 := 123123 or 'abded'; <<<<<<请设置一个值或字符串
SQL>alter session set events '10046 跟踪名称上下文永远,级别 12';
SQL>UPDATE /*+ RESTRICT_ALL_REF_CONS */ "LBI_ODS"。 "T_O_CUSTOMER_ACCOUNT" SET
"ACCOUNT_TYPE_ID" = : a1
WHERE
"ACCOUNT_NO" = 1234565; ;


==================
使用触发器设置10046
使用登录触发器开始跟踪:
创建或替换登录数据库后触发 user_logon_trg

开始
if USER = 'xxxx' then
立即执行
'改变会话设置事件''10046 跟踪名称上下文永远,级别8''';
end if;
end;
/

/* 以用户“xxxx”登录新会话并执行要跟踪的选择 * /


停止跟踪:通过 LogOff 触发器(需要在注销之前创建)
在数据库注销之前创建或替换触发器 user_logoff_trg
begin
if USER = 'xxxx' then
立即执行
'改变会话设置事件 ''10046 跟踪名称上下文关闭''';
end if;
end ;
/

==================
MMON的10046
1、请打开trace自动清除?
action_name=>'自动清除从站操作');
end;
/

2. 请等待至少一天。请明天检查何时执行自动清除,生成的 m00x 跟踪文件包含 10046

3. 关闭自动清除的跟踪
开始
dbms_monitor.serv_mod_act_trace_disable
(service_name=>'SYS$BACKGROUND',
  module_name => 'mon_slave',
action_name => '自动清除从站操作');
结束;
/

=============== ============
数据泵10046
1. 为 DM/DW 进程启用 10046 跟踪

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

2. 请重现问题,然后在数据泵导入命令中添加“TRACE=480300”

3. 请上传数据泵导入日志和生成的 DM/DW 进程跟踪

要通过发出以下命令禁用跟踪:

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

==================
通过其他方式设置10046
1. DBMS_SUPPORT启动跟踪:
exec sys.dbms_support.start_trace;
/* 执行要跟踪的选择 */

要停止跟踪:
exec sys.dbms_support.stop_trace ;
从另一个跟踪会话实例b下面演示如何跟踪从 V$SESSION 获取的 SID=18 和 Serial# =226 的会话。

2. 使用“dbms_system.SET_BOOL_PARAM_IN_SESSION”开始跟踪:
exec sys.dbms_system. SET_BOOL_PARAM_IN_SESSION(18, 226, 'sql_trace', TRUE);
/* 执行要跟踪的选择 */
要停止跟踪:
exec sys.dbms_system.SET_BOOL_PARAM_IN_SESSION(18, 226, 'sql_trace',FALSE);

3. 使用“dbms_system.set_ev”开始跟踪:
exec dbms_system.set_ev(18, 226, 10046, 12, '');

停止跟踪:
exec dbms_system.set_ev(18, 226, 10046, 0, '');
4. 使用“dbms_system.set_sql_trace_in_session”开始跟踪:
执行 dbms_system. set_sql_trace_in_session(18,226,TRUE);
/* 执行要跟踪的选择 */
要停止跟踪:
exec dbms_system.set_sql_trace_in_session(18,226,FALSE);
5. 使用"sys.dbms_monitor"要开始跟踪:
exec sys.dbms_monitor.session_trace_enable(session_id=>18,serial_num=>226, waits=>true,binds=>true);
/* 执行要跟踪的选择 */

要停止跟踪:
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 过程
CLIENT_ID_STAT_ENABLE 过程
CLIENT_ID_TRACE_DISABLE 过程
CLIENT_ID_TRACE_ENABLE 过程
DATABASE_TRACE_DISABLE 过程
DATABASE_TRACE_ENABLE 过程
SERV_MOD_ACT_STAT_DISABLE 过程
SERV_MOD_ACT_STAT_ENABLE 过程
SERV_MOD _ACT_TRACE_DISABLE 过程
SERV_MOD_ACT_TRACE_ENABLE 过程
SESSION_TRA CE_DISABLE过程
SESSION_TRACE_ENABLE 过程


6.使用Oradebug(作为SYS)开始跟踪:
oradebug setospid xxxx
oradebug event 10046 trace name context permanent, level 12;
/* 在被跟踪的会话中执行选择*/

要停止跟踪:
oradebug event 10046 跟踪名称上下文关闭;

上面的内容是如何理解跟踪信息的收集,你已经学到了知识或者技巧吗?如果您想学习更多技能或者丰富自己的知识库,请关注行业资讯频道。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何理解trace信息的收集

用户评论