`
wsql
  • 浏览: 11787787 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

使用sql_trace/10046事件进行数据库诊断

 
阅读更多

sql_trace/10046事件是oracle提供的用于进行sql跟踪的手段,其内容包括sql的解析过程、sql的执行计划、绑定变量的使用、会话发生的等待事件。

在使用sql_trace/10046事件前,有两个参数需要注意:

sys@ORCL> show parameter max_dump_file_size  --对trace文件的大小限制       

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_dump_file_size                   string      UNLIMITED
sys@ORCL> show parameter timed_statistics    --对重要信息的收集

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
timed_statistics                     boolean     TRUE
 

sql_trace的作用域:

1)对所有用户:

i)在参数文件中指定sql_trace=true

ii)alter system set sql_trace=true/false

2) 对当前用户:

启用当前session的跟踪:alter session set sql_trace=true;

结束跟踪:alter session set sql_trace=false;

3)对其他用户:

选择跟踪的进程(用户)

sys@ORCL> select sid,serial#,username from v$session where username is not null;

       SID    SERIAL# USERNAME
---------- ---------- ------------------------------
       142         14 HR
       159          5 SYS


设置跟踪:

sys@ORCL> exec dbms_system.set_sql_trace_in_session(142,14,true) 

PL/SQL procedure successfully completed.


停止跟踪:

sys@ORCL> exec dbms_system.set_sql_trace_in_session(142,14,false)

PL/SQL procedure successfully completed.


*************************************↖(^ω^)↗**********************************

10046事件是对sql_trace的增强,可分4个级别,具体如下:

1)level 1:等价于sql_trace

2)level 4:level 1+绑定值

3)level 8:level 1+等待事件跟踪

4)level 12:等价于level 1+level 4+level 8

10046事件的作用域:

1)对所有用户

i)在参数文件中修改:event=“10046 trace name context forever,level 12”

ii)alter system set events ‘10046 trace name context forever,level 8';

/ alter system set events '10046 trace name context off';

2)对当前用户

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

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

3)对其他用户

查询要跟踪的对象

sys@ORCL> select sid,serial#,username from v$session where username is not null;

       SID    SERIAL# USERNAME
---------- ---------- ------------------------------
       142         14 HR
       159          5 SYS


执行跟踪

sys@ORCL> exec dbms_system.set_ev(142,14,10046,8,'hr');

PL/SQL procedure successfully completed.


结束跟踪

sys@ORCL> exec dbms_system.set_ev(142,14,10046,0,'hr');

PL/SQL procedure successfully completed.


*********************************~(@^_^@)~*************************************

由于trace文件的格式比较难以阅读,我们可以通过TKPROF工具进行格式化,最终生成符合我们阅读习惯的sql trace 文件。

格式如下:

tkprof tracefile outputfile [options]

其中,option选项的说明和使用,我们可以通过在bash环境罗列:

[oracle@localhost ~]$ tkprof
Usage: tkprof tracefile outputfile [explain= ] [table= ]
              [print= ] [insert= ] [sys= ] [sort= ]
  table=schema.tablename   Use 'schema.tablename' with 'explain=' option.
  explain=user/password    Connect to ORACLE and issue EXPLAIN PLAN.
  print=integer    List only the first 'integer' SQL statements.
  aggregate=yes|no
  insert=filename  List SQL statements and data inside INSERT statements.
  sys=no           TKPROF does not list SQL statements run as user SYS.
  record=filename  Record non-recursive statements found in the trace file.
  waits=yes|no     Record summary for any wait events found in the trace file.
  sort=option      Set of zero or more of the following sort options:
    prscnt  number of times parse was called
    prscpu  cpu time parsing
    prsela  elapsed time parsing
    prsdsk  number of disk reads during parse
    prsqry  number of buffers for consistent read during parse
    prscu   number of buffers for current read during parse
    prsmis  number of misses in library cache during parse
    execnt  number of execute was called
    execpu  cpu time spent executing
    exeela  elapsed time executing
    exedsk  number of disk reads during execute
    exeqry  number of buffers for consistent read during execute
    execu   number of buffers for current read during execute
    exerow  number of rows processed during execute
    exemis  number of library cache misses during execute
    fchcnt  number of times fetch was called
    fchcpu  cpu time spent fetching
    fchela  elapsed time fetching
    fchdsk  number of disk reads during fetch
    fchqry  number of buffers for consistent read during fetch
    fchcu   number of buffers for current read during fetch
    fchrow  number of rows fetched
    userid  userid of user that parsed the cursor


我们通过一个例子来介绍对tkprof的使用:

SQL> show parameter timed_statistics

NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ timed_statistics boolean TRUE SQL> show parameter max_dump_file_size

NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ max_dump_file_size string UNLIMITED

sys@ORCL> alter session set sql_trace=true;

sys@ORCL> select * from hr.departments; 

sys@ORCL> alter session set sql_trace=false; --最好是关闭跟踪,减小对性能的开销

sys@ORCL> exit;  --在运行完查询后,要退出sql*plus(断开连接),这样才能完全关闭跟踪文件,使trace文件的所有信息都是有效的。

然后,我们就可以使用tkprof:

[oracle@localhost ~]$ tkprof /u01/app/oracle/admin/orcl/udump/orcl_ora_5467.trc tkprof_think.txt

TKPROF: Release 10.2.0.1.0 - Production on Fri Jul 27 11:18:13 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


[oracle@localhost ~]$ ls
tkprof_think.txt
 




分享到:
评论

相关推荐

    Oracle优化—SQL优化

    数据库、数据表、数据表I/O优化原则 2、选用适合的ORACLE优化器 3、访问Table的方式 ...8、使用sql_trace/10046事件进行数据库诊断 9、当前会话的所有SQL语句生成执行计划 10、如何干预执行计划 - - 使用hints提示

    深入解析OracleDBA入门进阶与诊断案例 3/4

    深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 ... 10.4 使用SQL_TRACE/10046事件进行数据库诊断   10.5 使用物化视图进行翻页性能调整   10.6 一次横跨两岸的问题诊断   10.7 总结

    深入解析OracleDBA入门进阶与诊断案例 2/4

    深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 ... 10.4 使用SQL_TRACE/10046事件进行数据库诊断   10.5 使用物化视图进行翻页性能调整   10.6 一次横跨两岸的问题诊断   10.7 总结

    深入解析OracleDBA入门进阶与诊断案例 4/4

    深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 ... 10.4 使用SQL_TRACE/10046事件进行数据库诊断   10.5 使用物化视图进行翻页性能调整   10.6 一次横跨两岸的问题诊断   10.7 总结

    深入解析Oracle.DBA入门进阶与诊断案例

    10.4 使用SQL_TRACE/10046事件进行数据库诊断 497 10.4.1 SQL_TRACE及10046事件的基础介绍 497 10.4.2 诊断案例之一:隐式转换与索引失效 502 10.4.3 诊断案例之二:跟踪后台错误 506 10.4.4 10046与等待...

    对于oracle对session进行跟踪的分析

    通过对 trace 档的分析,不仅可以掌握该 session 的活动, 也可以找出这个 session 中的瓶颈所在,对 session 的跟踪是 DBA 进行系统调优、故障诊断的常用方法。 对当前会话的活动进行跟踪及停止跟踪: alter ...

    数据库项目组日常运维及应急故障处理手册.docx

    并分析hanganalyze 生成的trace文件,看是否可以找到引起数据库hang 住的会话的信息。 (3)做systemstate dump 此时生成systemstate dump的时间会比较长,尤其是在会话数量较多的情 况下。且生成dump文件的...

    Oracle诊断案例

    Oracle诊断案例-I/O子系统 1 系统软硬件现状 1 Vmstat数据 2 Statpack数据 2 业务分析 3 数据库性能分析 3 修改建议 4 调整后性能的改善 5 Oracle诊断案例-Spfile案例 5 ...Oracle诊断案例-Sql_trace之一 38

    ORACLE9i_优化设计与系统调整

    §12.8 使用SQL_Trace和TKPROF 151 §12.8.1 设置跟踪初始化参数 152 §12.8.2 启用SQL_Trace实用工具 152 §12.8.3 用TKPROF格式化跟踪文件 153 §12.8.4 解释TKPROF输出文件 155 §12.8.5 解释计划(Explain Plan)...

    oracle9i oracle11g oracle10g 性能调优 基础学习 视频地址

    1z0-033-11(A)(好) SQL优化 SQL优化器的使用 查询计划 计划稳定性的概要 TRACE TKTOP使用 13 1z0-033-11(B) 13 1z0-033-11(B) 发布不同oracle文件的原因 诊断表空间 表空间分区原因 检查点工作 检查点优化 调整...

    2021 云和恩墨大讲堂PPT汇总(50份).zip

    Oracle 10046 Trace 的取得和解析方法 Oracle 基于AWR ASH的性能分析 Oracle DataGuard备份恢复最佳实践-姚远 Oracle Nologging全面总结 Oracle RAC 集群安装部署 Oracle RMAN 单实例异机迁移恢复(版本:11GR2) ...

    基于 gin+gorm+redis+mysql 读写分离的电子商城.zip

    包括 JWT 鉴权,CORS跨域,AES 对称加密,引入ELK体系方便日志查看,jaeger进行trace查看,skywalk MySQL 是一款广受欢迎的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现隶属于美国甲骨文公司...

    sqlserver-kit:Microsoft SQL Server数据库的有用链接,脚本,工具和最佳实践

    Microsoft SQL Server数据库的有用链接,脚本,工具和最佳实践 目录 回购文件夹和文件 (完整列表-613跟踪标志) (完整清单-从SQL Server 1.0到SQL Server 2019 ) 很棒SQL Server诊断信息查询(作者Glenn Alan ...

    ASP.NET2.0高级编程(第4版)1/6

     20.3.1 使数据库支持SQL  Server高速缓存  禁用功能695  20.3.2 使表支持SQL Server 高速缓存禁用功能695  20.3.3 对SQL Server的影响695  20.3.4 查看支持SQL  高速缓存禁用功能的表696  20.3.5 使表不...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    6.5.6 使用Wizard控件的事件 184 6.5.7 使用Wizard控件显示窗体元素 186 6.6 ImageMap服务器控件 189 6.7 小结 191 第7章 验证服务器控件 193 7.1 有效性验证 193 7.2 客户端和服务器端的验证 194 7.3 ASP...

    Oracle从入门到精通

    一、SQL................................................... 1.1、基本概念:........................................... 1.2、数据库安全:......................................... 1.3、基本的SQL SELECT ...

Global site tag (gtag.js) - Google Analytics