oracle性能调优之trace文件跟踪

oracle笔记整理15——性能调优之trace文件跟踪
thinkpadshi 2016-01-16 23:09:50 1738 收藏
展开
1) sql_trace方式

a) show parameter sql_trace;–查看trace状态,默认为false

b) alter session set sql_trace=true;–修改为true

c) exec sql;–运行sql语句

d) alter session set sql_trace=false;–恢复回false状态

e) show parameter dump_dest;–trace类型

f) select value from v$parameter where name = ‘user_dump_dest’;–生成的trace文件所在地址

g) 动态性能视图查找生成的trace文件

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 v$thread t, 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;

1
2
3
4
5
6
7
8
9
10
11
12

这里写图片描述
h) 转换trace文件cmd窗口中tkprof命令

--tkprof trace文件 output=输出文件;
C:\Users\Administrator>tkprof e:\app\administrator\diag\rdbms\orcl\orcl\trace\or
cl_ora_47912.trc output=d:\aa.txt sys=no explain=账号/密码;

1
2
3

这里写图片描述
这里写图片描述

i) 对于每一条SQL语句,都包含3个步骤:
Parse:SQL的分析阶段.
Execute:SQL的执行阶段.
Fetch:数据提取阶段.(对于一次SQL操作,Fetch可能多次)

j) 横向的标题头为:
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows=number of rows processed by the fetch or execute call
count:当前的操作执行的次数.
cpu:当前操作消耗的CPU时间(秒).
elapsed:当前操作消耗的时间(CPU时间加等待时间).
disk:磁盘的IO次数.
query:当前操作的一致性读取的数据块数.
current:前操作的current读取的数据块数(通常在update操作时发生).
rows:处理的记录行数.

k) Misses in library cache during parse
是指是不是重用了执行计划,如果同一条SQL语句第二次执行,其值为零,这里是1,表示在共享池里没有这一条SQL的执行计划,发生了一次硬解析.
Optimizer:优化器模式.
Parsing user id:分析的用户ID.

l) Row Source Operation部分包含的实际消耗的资源.
cr:一致性读取的数据块,相当于Fetch的query.
pr:物理读, 相当于Fetch的disk.
pw:物理写.
time:当前操作的执行时间.
2) 10046事件

10046事件按照收集的信息内容,分为4个级别
level1: 等同于前面介绍的sql_trace;
level4: 在level1的基础上增加绑定变量的收集;
level8: 在level1的基础上增加等待事件的收集;
level12: 等同于level4+level8(所以这个级别用的最普遍);

a) 开启当前会话,级别为12的10046事件

ALTER SESSION SET EVENTS‘10046 trace name context forever, level 12‘;

1

b) 关闭当前会话,任何级别的10046事件

ALTER SESSION SET EVENTS‘10046 trace name context off‘;

 

c) 执行sql语句,并使用动态sql查找生成的trace文件;

d) 转换trace文件cmd窗口中tkprof命令

--tkprof trace文件 output=输出文件;
C:\Users\Administrator>tkprof e:\app\administrator\diag\rdbms\orcl\orcl\trace\or
cl_ora_6488.trc output=d:\10046.txt sys=no explain=账号/密码;

 

————————————————
版权声明:本文为CSDN博主「thinkpadshi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/thinkpadshi/java/article/details/50530179

oracle性能调优之trace文件跟踪

上一篇:Sql中联合查询中的”子查询返回的值不止一个“的问题


下一篇:用oracle trace 来跟踪session