oracle笔记整理15——性能调优之trace文件跟踪

来源:互联网 发布:淘宝找不到菜鸟驿站 编辑:程序博客网 时间:2024/04/29 17:23

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;

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

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

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

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';

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\orcl_ora_6488.trc  output=d:\10046.txt sys=no explain=账号/密码;

这里写图片描述

0 0
原创粉丝点击