当前位置:  数据库>oracle

Oracle SQL Trace 和 10046 事件

    来源: 互联网  发布时间:2017-05-21

    本文导语: 一. SQL_TRACE 当SQL语句出现性能问题时,我们可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪,我们可以了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL执行的整个过程输出到一个trace文件中,我们可以读这个trace 文件来了解...

一. SQL_TRACE

当SQL语句出现性能问题时,我们可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪,我们可以了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL执行的整个过程输出到一个trace文件中,我们可以读这个trace 文件来了解在这个SQL执行过程中Oracle 都做了哪些操作。

 

可以通过sql命令启动SQL_TRACE,或者在初始化参数里面。

 

SQL>alter session set sql_trace=true;

或者

SQL> alter database set sql_trace=true;

 

这两条命令的区别:

在session级别设置,只对当前session进行跟踪,在实例级别,会对实例上所有的SQL做跟踪,这种方式跟踪的SQL太多,代价是非常大的,所有很少用。

 

如果是在初始化文件里面设置,只需要在参数文件里添加一个sql_trace 参数即可。

 

 

示例:

 

1.确定当前的trace文件。

 

1.1通过设置trace 文件标识

SQL> alter session set tracefile_identifier='安庆怀宁';

会话已更改。

 

设置标识的目的就是方便我们查找生成的trace文件。我们只需要在trace目录查找文件名里带有标识的文件即可。 在Oracle 10g中,SQL_TRACE生成的trace文件默认路劲是$ORACLE_BASE/admin/SID/udump.

到了11g,trace 默认路径在:$ORACLE_BASE/diag/rdbms/orcl/orcl/trace目录下.

 

1.2直接用如下SQL直接查出,当前的trace文件名。

/* Formatted on 2010/9/1 23:56:24 (QP5 v5.115.810.9015) */

SELECTd.VALUE

|| '/'

|| LOWER(RTRIM(i.INSTANCE,CHR(0)))

|| '_ora_'

|| p.spid

|| '.trc'

AS"trace_file_name"

FROM(SELECTp.spid

FROMv$mystat m, v$session s, v$process p

WHEREm.statistic# =1AND s.SID=m.SIDANDp.addr = s.paddr)p,

(SELECTt.INSTANCE

FROMv$thread t, v$parameter v

WHEREv.NAME='thread'

AND(v.VALUE=0ORt.thread# =TO_NUMBER(v.VALUE))) i,

(SELECTVALUE

FROMv$parameter

WHERENAME='user_dump_dest') d;

 

SQL> SELECTd.VALUE

2|| '/'

3|| LOWER (RTRIM (i.INSTANCE, CHR (0)))

4|| '_ora_'

5|| p.spid

6|| '.trc' as "trace_file_name"

7FROM (SELECT p.spid

8FROM v$mystat m, v$session s, v$process p

9WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p,

10(SELECT t.INSTANCE

11FROM v$thread t, v$parameter v

12WHERE v.NAME = 'thread'

13AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,

14(SELECT VALUE

15FROM v$parameter

16WHERE NAME = 'user_dump_dest') d;

 

trace_file_name

--------------------------------------------------------------------------------

d:/app/administrator/diag/rdbms/orcl/orcl/trace/orcl_ora_3048.trc

 

2.启动SQL_TRACE

SQL> alter session set sql_trace=true;

会话已更改。

 

3.进行相关事务操作

SQL> select * from t;

 

4.关闭SQL_TRACE

SQL> alter session set sql_trace=false;

会话已更改。

 

注意,这里是显示的关闭SQL_TRACE,在session级别,也可以直接退出SQLPLUS来终止SQL_TRACE。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle中常见的33个等待事件小结 iis7站长之家
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,