SQL_TRACE/10046 事件是 Oracle 提供的用于进行 SQL 跟踪的手段,在日常的数据库问题诊断和解决中是非常常用的方法。但其生成的trace文件需要tkprof工具生成一个可供人类阅读的格式才可。
TKPROF用法请参考[terry笔记]Oracle会话追踪(二):TKPROF
会话追踪可以追踪本会话、其他会话以及整个数据库,但是追踪整个数据库会对数据库的cpu、io造成很大负载,并不常用,故这里便不再讨论有关追踪整个数据库的例子以及过程。
 
一、SQL_TRACE
为了使SQL_TRACE效果更明显:
初始化参数TIMED_STATISTICS 设置为 True,否则一些重要信息不会被收集,该参数默认即为true。
设置 MAX_DUMP_FILE_SIZE 该参数设置跟踪文件的大小限制,从9i开始,该参数默认值为 unlimited。
 
1.追踪当前会话
启动SQL_TRACE:
alter session set sql_trace=true;
这时可以执行sql,其过程已被追逐。
关闭SQL_TRACE:
alter session set sql_trace=false;
 
2.追踪其他会话,利用dbms_system.set_sql_trace_in_session包
首先查询当前系统的会话:

select sid,serial#,username from v$session;
启动SQL_TRACE:

exec dbms_system.set_sql_trace_in_session(sid,serial#,true)
等待一段时间,如果确定某个功能或模块存在问题,可以在此期间有意识地调用,以确保可以捕获问题代码。
关闭SQL_TRACE:

exec dbms_system.set_sql_trace_in_session(sid,serial#,false)
 
 
二、10046事件

10046 事件是 Oracle 提供的内部事件,是对 SQL_TRACE 的增强,可以设置以下 4 个级别:

Level 1:启用标准的 SQL_TRACE 功能,等价于 SQL_TRACE。
Level 4:等价于 Level 1 + 绑定值(bind values)。
Level 8:等价于 Level 1 + 等待事件跟踪。
Level 12:等价于 Level 1 + Level 4 + Level 8。
类似 SQL_TRACE,10046 事件可以在全局设置,也可以在 session 级设置。
 
1.追踪当前会话
启动10046:
alter session set events '10046 trace name context forever';
alter session set events '10046 trace name context forever, level 8';
关闭10046:
alter session set events '10046 trace name context off';
2.追踪其他会话,利用dbms_system.set_ev包,包的选项分别是(sid,serial#,event,level,username)
首先查询当前系统的会话:select sid,serial#,sid from v$session;
启动10046:
exec dbms_system.set_ev(sid,serial#,10046,8,'username');
关闭10046:
exec dbms_system.set_ev(sid,serial#,10046,0,'username'); 


 
三、获取追踪文件位置(其实就在user_dump_dest下,进去ls -ltr就行了):
其trace文件的命名方式SID_ora_PID.trc
SELECT d.value
||'/'
||Lower(Rtrim(i.INSTANCE, Chr(0)))
||'_ora_'
||p.spid
||'.trc' trace_file_name
FROM (SELECT p.spid
FROM v$mystat m,
v$session s,
v$process p
WHERE m.statistic# = 1
AND s.sid = m.sid
AND p.addr = s.paddr) p,
(SELECT t.INSTANCE
FROM v$thread t,
v$parameter v
WHERE v.name = 'thread'
AND ( v.value = 0
OR t.thread# = To_number(v.value) )) i,
(SELECT value
FROM v$parameter
WHERE name = 'user_dump_dest') d;
四、追踪的几种方式:
1.追踪自己,这个就不用说什么了,为了检查某些特殊sql,可以用这个办法。
2.追踪他人session更加有效果,但是如何定位有问题的session?
  1)top,很容易查看到当前使用资源更多的连接以及PID号(win平台完蛋)
  2)通过PID查找到其sid、serial#
select s.sid,s.serial# from v$session s,v$process p where s.paddr=p.addr and p.spid='14483';
 
  3)通过sid,serial#进行trace,然后输出tkprof文件即可
 
3.在环境没有人用的时候(加班。。),只让某几个session连接进入数据库(就是v$session只有几个连接),然后点击前台应用特定的模块进行trace。 

[terry笔记]Oracle会话追踪(一):SQL_TRACE&EVENT 10046的更多相关文章

  1. [terry笔记]Oracle会话追踪(二):TKPROF

    接上一笔记[terry笔记]Oracle会话追踪(一):SQL_TRACE&EVENT 10046 http://www.cnblogs.com/kkterry/p/3279282.html ...

  2. [terry笔记]Oracle数据泵-schema导入导出

    数据泵是10g推出的功能,个人倒数据比较喜欢用数据泵. 其导入的时候利用remap参数很方便转换表空间以及schema,并且可以忽略服务端与客户端字符集问题(exp/imp需要排查字符集). 数据泵也 ...

  3. [terry笔记]Oracle10g/11g安装-redhat5.5

    操作系统准备工作 其实真正的进入图形界面安装是简单的,只是前期的配置比较繁琐,如版本.空间.位置.软件包.用户.环境变量.内核参数,这里主要讨论前期配置. 10g与11g的单实例安装基本一样,主要区别 ...

  4. [terry笔记]物化视图 materialized view基础学习

    一.物化视图定义摘录:     物化视图是包括一个查询结果的数据库对像(由系统实现定期刷新数据),物化视图不是在使用时才读取,而是预先计算并保存表连接或聚集等耗时较多的操作结果,这样在查询时大大提高了 ...

  5. [terry笔记]IMPDP报错ORA-39083 Object type TYPE failed to create ORA-02304

    今天在使用impdp导入的时候(同一数据库中转换schema),遇到了 ORA-39083: Object type TYPE failed to create with error: ORA-023 ...

  6. [terry笔记]一个在线美化sql的网站

    http://www.dpriver.com/pp/sqlformat.htm 甚是好用.

  7. [terry笔记]更改oracle用户名

    更改oracle的用户名 之前有个需求,整理一个schema的表.索引等规划到一个表空间里,利用expdp/impdp然后remap就完成了,但是整理好的用户名remap变更了,应用又不想修改其连接信 ...

  8. [读书笔记]《Android开发艺术探索》第十五章笔记

    Android性能优化 Android不可能无限制的使用内存和CPU资源,过多的使用内存会导致内存溢出,即OOM. 而过多的使用CPU资源,通常是指做大量的耗时任务,会导致手机变的卡顿甚至出现程序无法 ...

  9. [terry笔记]RMAN综合学习之恢复

    [terry笔记]RMAN综合学习之备份http://www.cnblogs.com/kkterry/p/3308405.html [terry笔记]RMAN综合学习之恢复 http://www.cn ...

随机推荐

  1. windows常用运行命令收集(持续更新)

    快捷键打开运行窗口:Windows + R > calc(计算器) > gpedit.msc(本地组策略编辑器) > regedit(注册表) > mstsc(远程桌面) &g ...

  2. GitHub指南

    1.创建新仓库 #创建新文件夹,打开,然后执行 git init #以创建新的 git 仓库. 2.检出仓库 #执行如下命令以创建一个本地仓库的克隆版本: git clone /path/to/rep ...

  3. fastCGI (二)各方优劣

    1. 克服 CGI 的瓶颈 1.1 令人头痛的效率问题 拜 CGI 之赐,网站不再只有固定不变的图形和文字,藉由程序动态产生的网页可以让网站好象『活』了起来.小从简单的网页计数器,留言版,大至处理众多 ...

  4. SQL基本语句(3) LOAD DATA INFILE

    使用LOAD语句批量录入数据 语法: LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNOR ...

  5. Swift 学习一函数&函数属性&懒加载

    函数 函数相当于OC中的方法 格式: func 函数名(参数列表) -> 返回值类型 {    代码块    return 返回值} func 函数名(参数列表){  // 返回值为Void 可 ...

  6. mjrefresh源码分析

    最近想自己写个下拉刷新的库,但是始终感觉无从下手,想想总是容易的.原理也很简单,真正要下手写的时候,呵呵.不得不说ios封装得很好,网上可以用的成熟的库也很多,也正是因为如此很多开发者也忽略了很多底层 ...

  7. [SSH 2] 以网站主页面浅谈Struts2配置

    导读:前面总体的介绍了一下SSH框架,那么作为Struts这一支,具体是怎么配置的呢?本篇博客则主要是以自己做过的实例中的登录一条线,简单介绍一下struts2的配置,如有不妥之处,还请大家多提点提点 ...

  8. MFC六大核心机制之二:运行时类型识别(RTTI)

    上一节讲的是MFC六大核心机制之一:MFC程序的初始化,本节继续讲解MFC六大核心机制之二:运行时类型识别(RTTI). typeid运算子 运行时类型识别(RTTI)即是程序执行过程中知道某个对象属 ...

  9. mongodb replica set(副本集)设置步骤

    网上已经有一大堆的设置步骤的了,根据我遇到的问题,整理一下,如下: 首先先去下载一个mongodb最新版,目前最新版应该是2.6 cd /usr/local/bin wget http://fastd ...

  10. VS2010插件及快捷键设置

    几个常用的Visual Studio插件,番茄助手以及如下的插件,具体作用可用通过Google自行获取. 安装番茄助手后,可用在源文件和头文件中快速切换.但为了更方便使用,建议设置快捷键. vs201 ...