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

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;

相关文章:

  • 【Linux】--- 线程互斥
  • 【保姆级】阿里云codeup配置Git的CI/CD步骤
  • Spring MVC 深度解析:原理、源码剖析与实战
  • Ubuntu22.04 上安装Qt5以及编译MySQL驱动
  • 从 @SpringBootApplication 出发,深度剖析 Spring Boot 自动装配原理
  • centos 9 编译安装 rtpengine (快方式)-使用 debian12 系统自带
  • SQL 基础 BETWEEN 的常见用法
  • leetcode hot100 柱状图中的最大矩形
  • Linux下S3cmd使用方式详解:从入门到高级的对象存储管理
  • RISC-V AIA学习2---IMSIC
  • macOS 安装 Miniconda
  • C++ Json-Rpc框架-3项目实现(1)(1.其它函数实现2.消息类型字段定义3.消息Message/通信Muduo抽象具象实现)
  • 深入解析 Vue3 响应式系统:原理、性能优化与应用场景
  • leetcode 2116. 判断一个括号字符串是否有效 中等
  • 如何扩展 Linux 中 ext4 文件系统的大小
  • 【PostgreSQL】pg各版本选用取舍逻辑与docker安装postgres:15
  • Day110 若依-基础
  • 微信小程序中使用WebSocket通信
  • 【2025】基于springboot+vue的高考志愿填报系统设计与实现(源码、万字文档、图文修改、调试答疑)
  • Chrome 134 版本开发者工具(DevTools)更新内容
  • 用ppt做网站方法/厦门seo服务
  • 兰州做网站改版的公司/引流推广平台
  • wordpress 有什么用/济南做seo外包
  • 家具建设网站/aso优化师工作很赚钱吗
  • 湖北省建设厅官方网站电话/百度搜索app
  • 深圳宝安外贸网站建设公司/设计网站