oracle sql跟踪方法:
1、sql_trace

打开跟踪:alter session set sql_trace=true;
为跟踪文件做标记:alter session set tracefile_identifier='look_for_me';
停止跟踪:alter session set sql_trace=false;
最后生成的跟踪文件可以采用tkprof工具生成来查看。

2、10046跟踪代码
跟踪界别介绍:
Level 0 停用SQL跟踪,相当于SQL_TRACE=FALSE
Level 1 标准SQL跟踪,相当于SQL_TRACE=TRUE
Level 4 在level 1的基础上增加绑定变量的信息
Level 8 在level 1的基础上增加等待事件的信息
Level 12 在level 1的基础上增加绑定变量和等待事件的信息

打开跟踪:
GRANT ALTER SESSION TO lttfm; --必须具有alter session权限
alter session set events '10046 trace name context forever,level 12';--当前用户设置
或者在init.ora文件中插入下面的行:event = 10046 trace name context forever,level 12;--为全局设置

关闭跟踪:
alter session set events '10046 trace name context off';--关闭用户跟踪

注:sql_trace和10046设置代码跟踪只能针对本会话或者系统级进行会话跟踪,具体设置某个非本会话的跟踪需要采用oradebug或者
dbms_system.set_ev或者dbms_monitor.session_trace_enable。

3、使用oradebug
--用如下语句找出要跟踪的spid
select * from v$session a where audsid = userenv('sessionid'); --查询当前的sessionid
select s.USERNAME,
s.OSUSER,
s.SID,
s.PADDR,
s.PROCESS,
p.spid os_process_id,
p.pid oracle_process_id
from v$session s, v$process p
where s.paddr = p.addr
and s.username = upper('LTWEBGIS')
and s.SID = 145;

--设置跟踪进程id。
SQL> connect / as sysdba
SQL> oradebug setospid 5672;该语句为跟踪其他会话(5672为v$process的spid),

若跟踪本会话,执行 oradebug setmypid。

SQL> connect / as sysdba
SQL> oradebug setorapid 15 --输入的15为v$process的pid

--设置跟踪文件大小无限制
SQL> oradebug unlimit;
--设置跟踪,级别8
SQL> oradebug event 10046 trace name context forever,level 8;
已处理的语句

--关闭跟踪
SQL> oradebug event 10046 trace name context off;

执行该语句(SQL> oradebug setospid 5672;)时,提示“ORA-01031: 权限不足”,
原因:oradebug是sysdba的命令(一般用户执行提示权限不足),而且是sqlplus特有的命令,不能在plsql工具中执行(否则提示无效sql)。
可以用oradebug help命令查看oradebug工具说明。


4、dbms_system(必须用sys用户执行)
exec dbms_system.set_ev(si => 159,se => 254,ev => 10046,le =>8 ,nm => '');--会话id等参数必须设置正确,否则trace无法生成
生成后可用sql语句查看trace文件位置。

--停止跟踪
exec dbms_system.set_ev(si => 159,se => 254,ev => 10046,le =>0 ,nm => '');

5、dbms_monitor
exec dbms_monitor.session_trace_enable(session_id => 136,serial_num => 4,waits => true,binds => true);
exec dbms_monitor.session_trace_disable(session_id => 136,serial_num => 4);
如果不设置session_id或者设置为null,则跟踪当前会话

6、dbms_support
exec dbms_support.start_trace_in_session(sid => 1234,serial# => 56789,waits => true,binds => true);
exec dbms_support.stop_trace_in_session(sid => 1234,serial# => 56789);
dbms_support默认情况下,系统不安装这个包。如果需要使用的话,需进行单独设置。在$ORACLE_HOME/rdbms/admin/目录下应该存在
dbmssupp.sql,prvtsupp.plb这两个文件,执行这两个文件后才可使用,如果别的用户要使用,需要进行相应的授权,并创建同义词。

注:3,4,5,6这几种跟踪方法都是在sys的用户下才能执行,可对任意会话进行跟踪。

获取跟踪文件:
1)oradebug获取跟踪文件
--使用oradebug获取本会话跟踪文件位置
SQL> oradebug setmypid
SQL> oradebug tracefile_name

--获取任意会话跟踪文件位置
SQL> oradebug setospid 5392
已处理的语句
SQL> oradebug tracefile_name
d:\oracle\product\10.2.0\admin\fgisdb\udump\fgisdb_ora_5600.trc


2)sql获取跟踪文件

--sql查看当前session跟踪文件位置
SELECT d.value || '\' || lower(rtrim(i.instance_name, 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 instance_name FROM v$instance) i,
(SELECT VALUE FROM v$parameter WHERE NAME = 'user_dump_dest') d;

--以下sql为查询输入的spid的会话跟踪文件
select d.value || '\' || lower(rtrim(i.instance_name, chr(0))) || '_ora_' ||
&spid || '.trc' trace_file_name
from (SELECT instance_name FROM v$instance) i,
(select value from v$parameter where name = 'user_dump_dest') d;

查看跟踪级别
1)查看当前session的跟踪级别(必须在sys用户下执行)
declare
event_level number;
begin
dbms_system.read_ev(10046,event_level);
dbms_output.put_line(to_char(event_level));
end;

2)执行如下语句查看跟踪事件的跟踪级别

SQL> oradebug setospid spid --先指定要查看跟踪级别的spid
SQL> oradebug eventdump session
10046 trace name CONTEXT level 8, forever

注:如果开启了跟踪会话,但之后数据库关闭,那么跟踪自动关闭。

转自:http://www.cnblogs.com/lanzi/archive/2012/07/31/2616606.html

SQL 跟踪方法相关介绍的更多相关文章

  1. Oracle性能分析1:开启SQL跟踪和获取trace文件

    当Oracle查询出现效率问题时,我们往往须要了解问题所在,这样才干针对问题给出解决方式.Oracle提供了SQL运行的trace信息,当中包括了SQL语句的文本信息.一些运行统计,处理过程中的等待, ...

  2. linux u-boot跟踪方法总结

    拿到一块板子,其中很重要的一项就是看电路图还有Datasheet. 这个真的很重要,首先你要知道cpu的架构是什么,armv7?arvmv5?还是其他的,哪个公司的芯片?是freescale 还是TI ...

  3. Phoenix(sql on hbase)简单介绍

    Phoenix(sql on hbase)简单介绍 介绍: Phoenix is a SQL skin over HBase delivered as a client-embedded JDBC d ...

  4. webgote的例子 数据库与sql注入的相关联系(1)

    大家好我是时光凉春衫薄 之前将讲的sql注入有点随便了我同事也觉得有些地方看不懂,往后的几天我尽量写的细一点.尽可能让大家能看懂.(新手出道大佬多多指教.欢迎评论批评.) 数据库与sql注入的相关联系 ...

  5. 数据库与sql注入的相关知识

    数据库与sql注入的相关知识 sql语句明显是针对数据库的一种操作,既然想通过sql注入的方法来拿取数据那么就要先了解一下如何的去操作数据库,这方面并不需要对数据库有多么的精通但是如果了解掌握了其中的 ...

  6. sql跟踪及tkprof使用

    简述 在oracle数据库中,awr是关于数据库系统总体的负载情况和运行情况的报告.而当系统负载都显示正常,而client运行某些动作响应非常慢,或者某些终端连接的会话运行缓慢或异常时,就须要用到会话 ...

  7. sql 跟踪

    目录 1 sql跟踪 1.1 alter session 1.2 DBMS_MONITOR 1.3 DBMS_SESSION 1.4 oradebug模式 1.5 触发器的模式启用sql 跟踪 1.6 ...

  8. KEGG数据库的使用方法与介绍

    KEGG数据库的使用方法与介绍 KEGG的数据 KEGG中的pathway是根据相关知识手绘的,这里的手绘的意思可能是指人工以特定的语言格式来确定通路各组件的联系:基因组信息主要是从NCBI等数据库中 ...

  9. ppDelegate的相关介绍

    //  AppDelegate的相关介绍//  IOS笔记 //@interface AppDelegate : UIResponder <UIApplicationDelegate>// ...

随机推荐

  1. MWC飞控增加声纳定高的方法

    MWC飞控增加声纳定高的方法 2015.12.17 更新:经过2个周末的上机测试,该算法效果很好,在低空超声锁高之后离地高度非常稳定,现在已经成功应用在低空航拍上了. 现状 MWC开源飞控已经很有点年 ...

  2. 多线程(三)GCD

    一.GCD GCD:Grand Central Dispatch,宏大的中央调度!!!是苹果为多核的并行运算提出的解决方案,会自动合理地利用更多的CPU内核(比如双核.四核), GCD的底层依然是用线 ...

  3. Oracle 自定义函数Function

    示例代码: CREATE OR REPLACE  FUNCTION "MY_DATABASE"."F_GET_USER_COUNT_BY_DEPART" ( D ...

  4. noip2007 树网的核

    P1099 树网的核 112通过 221提交 题目提供者该用户不存在 标签动态规划树形结构2007NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录   题目描述 设T=(V, E, W) ...

  5. Code Sign error: No unexpired provisioning profiles found that contain any of the keychain's signing certificates

    最近离职了,刚好在离职之际有人叫我帮做个项目,简直了,没有mac电脑,没有真ji设备,简直了.接项目那哥们,暂且叫做J,大哥说我给你想办法,then,给借了个mac pro.刚拿到电脑真是喜出望外啊, ...

  6. 下雪了-js下雪效果

    Jingle Bells,Jingle Bells,圣诞来临,做了一个下雪的小程序玩.有大雪花和小雪花. <!DOCTYPE html PUBliC "-//W3C//DTD XHTM ...

  7. dedecms代码研究一

    dedecms相信大家一定都知道这个cms系统,功能比较强大,有比较完善的内容发布,还有内容静态化系统,还有就是它有自己独特的标签系统和模板系统.而模板系统也是其他cms系统比较难模仿的的东西,这个东 ...

  8. XSS CSRF 攻击

    XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery)定义: 跨网站脚本(Cross-site scripting ...

  9. No deleted LINE chat messages recovered on iOS 9.1 after UFED extraction

    The evidence is iPhone 5s with iOS 9.1 and not jail breaked. I use UFED to do advanced logical extra ...

  10. 基于s5pv210嵌入式linux使用其他动态、静态库文件程序的交叉编译

    刚刚移植了sqlite3迫切想测试一些,结果将原来在ubuntu系统下写好且测试通过的程序,重新编译就报错,无法找到已定义的函数 这是由于没有使用库或者使用了错误的就.库造成的结果. 正确做法为: a ...