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 VMYSTAT M, VSESSION S, V$PROCESS P

WHERE M.STATISTIC# = 1

AND S.SID = M.SID

AND P.ADDR = S.PADDR) P,

(SELECT T.INSTANCE

FROM SYS.VTHREAD T, SYS.VPARAMETER 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 vprocess where addr in (select paddr from vsession 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 vsession s, vprocess p, v$parameter pa

WHERE pa.name = 'user_dump_dest'

AND s.paddr = p.addr

AND s.sid = 979;

相关推荐
三8441 小时前
sqli-labs1-10通关笔记
数据库
BullSmall3 小时前
Another Redis Desktop Manager(ARDM)下载指南
数据库·redis·缓存
SelectDB3 小时前
Apache Doris 倒排索引工作原理:全文检索提速 59 倍,点查提速 14 倍
数据库
码农颜3 小时前
5.1.1 原⼦性
数据库·mysql
机建狂魔3 小时前
Codex 接入第三方模型 API 实战:以 Mimo 为例
java·服务器·数据库·ai·ai编程·codex
山峰哥4 小时前
数据库工程与SQL调优:从慢查询到秒级响应的实战之路
java·开发语言·数据库·sql·深度优先·启发式算法
moMo4 小时前
# 向量数据库入门:从"关键词匹配"到"语义理解"
数据库
ACP广源盛139246256734 小时前
DeepSeek‑V4‑Flash 公测@ACP#昇腾 950 国产算力组合落地,国产 PCIe 交换芯片 IX9104 有哪些硬件机会
大数据·数据库·人工智能·分布式·单片机·嵌入式硬件·microsoft
进击的女IT5 小时前
通过mysql中的Data目录恢复数据库数据
数据库·mysql
yuezhilangniao5 小时前
AI工具全家桶:从开发到运维,从数据库到产品经理-含魔塔社区简介
运维·数据库·人工智能