当前位置: 首页 > article >正文

Oracle 启用 Sql 跟踪的方式

启用 SQL 跟踪的方式

一、跟踪自己的会话或者是别人的会话
1、跟踪自己当前会话
exec dbms_session.set_sql_trace(true/false);

2、跟踪其他的会话
exec dbms_system.set_sql_trace_in_session(sid,serial#,true|false);

二、整个数据库系统开启跟踪
1、开启全库跟踪,不建议
alter system set events '10046 trace name context forever,level 1';

2、关闭跟踪
alter system set events '10046 trace name context off';

3、10046 跟踪级别
level 1:跟踪SQL语句,等于sql_trace=true,level 0 相当于 sql_trace=false
level 4:包括变量的详细信息
level 8:包括等待事件
level 12:包括绑定变量与等待事件

注意:在11g以及后续版本中已经不推荐使用
alter system set sql_trace=true;
alter system set sql_trace= false;

三、查看跟踪文件
1、查看跟踪文件位置(当前会话)
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 SYS.V$THREAD T, SYS.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; 

2、tkprof 格式化跟踪文件
tkprof trace_file_name out_file

其他启用方式

一、通过 oradebug 跟踪其他会话
查出spid和pid
select spid,pid from v$process where addr in (select paddr from v$session where sid=(613));
选定pid
oradebug setospid 5024
取消对trace文件大小的限制
oradebug unlimit;
开启10046
oradebug event 10046 trace name context forever,level 12;
查看trace地址
oradebug tracefile_name;
格式化trace文件
tkprof zzh_ora_5024.trc zzh_ora_5024.txt
关闭10046(一定要关闭)
oradebug event 10046 trace name context off;

参数介绍:
count = OCI过程执行的次数
CPU   = CPU时间,以秒为单位执行
Elapsed =以秒为单位的执行时间
Disk    =从磁盘读取缓冲区的物理次数
Query   =为一致性读取而获得的缓冲区数量
Current =在当前模式下获得的缓冲区数量(通常用于更新)
Rows    =由取回或执行调用处理的行数

二、通过 dbms_system.set_ev 启用会话跟踪

使用 dbms_system.set_ev 系统包根据 SID,SERIAL# 跟踪其他会话事件,如10046等
exec dbms_system.set_ev(sid,serial#,10046,trace_level,'');

根据 sid 查看会话跟踪文件位置
SELECT pa.value || '/' || LOWER(SYS_CONTEXT('userenv', 'instance_name')) ||
       '_ora_' || p.spid || '.trc' AS trace_file
  FROM v$session s, v$process p, v$parameter pa
 WHERE pa.name = 'user_dump_dest'
   AND s.paddr = p.addr
   AND s.sid = 979;


http://www.kler.cn/a/591204.html

相关文章:

  • 微软OneNote无法同步解决方案
  • 记一次ElasticSearch参数调优
  • Bash环境定制git分支提示符暨JDK版本切换脚本
  • C 语言格式化输入输出详解
  • 译:《Converting a Hugging Face Model to a GGUF Model》转化HuggingFace原生模型为GGUF格式
  • autosar功能安全文档解析
  • 【极光 Orbit·STC8AH】04. 深度探索 GPIO 底层逻辑
  • Redis之单线程与多线程
  • 【leetcode hot 100 124】二叉树中的最大路径和
  • 【Linux网络编程】I/O模型
  • DeepSeek 3FS集群化部署临时笔记
  • 素数判定方法详解:从基础试除法到优化策略
  • TDE透明加密:重塑文件传输与网盘存储的安全新范式
  • 生信分析服务作图TCGA/GEO数据库挖掘细胞测序转录学代做指导辅导
  • Scrapy爬虫实战:动态代理破解链家反爬机制的详细步骤
  • 面试经典问题(持续更新)
  • C++编译汇编八股总结
  • 味觉传送器E-Taste:开启虚拟世界的味觉之门
  • 【NoSql】Redis
  • 护网面试题