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;

相关推荐
码出财富32 分钟前
SQL语法大全指南
数据库·mysql·oracle
异世界贤狼转生码农2 小时前
MongoDB Windows 系统实战手册:从配置到数据处理入门
数据库·mongodb
QuZhengRong3 小时前
【数据库】Navicat 导入 Excel 数据乱码问题的解决方法
android·数据库·excel
码农阿豪3 小时前
Windows从零到一安装KingbaseES数据库及使用ksql工具连接全指南
数据库·windows
时序数据说8 小时前
时序数据库市场前景分析
大数据·数据库·物联网·开源·时序数据库
听雪楼主.12 小时前
Oracle Undo Tablespace 使用率暴涨案例分析
数据库·oracle·架构
我科绝伦(Huanhuan Zhou)12 小时前
KINGBASE集群日常维护管理命令总结
数据库·database
妖灵翎幺12 小时前
Java应届生求职八股(2)---Mysql篇
数据库·mysql
HMBBLOVEPDX12 小时前
MySQL的事务日志:
数据库·mysql
YA33314 小时前
java基础(九)sql基础及索引
java·开发语言·sql