alter session set events '10046 trace name context forever, level 12';
alter table test_move move tablespace users online;
alter session set events '10046 trace name context off';
select TRACEFILE from v$process where addr = (select paddr from v$session where sid = (select sid from v$mystat where rownum = 1));
SELECT TRACEFILE ,SPID FROM v$process WHERE ADDR IN (select paddr from v$session where username = 'DM' and MODULE ='dw.sapBWD_DVEBMGS00@hqbwadev01 (TNS V1-V3)');
--other session exec
oradebug setospid 23456
oradebug event 10046 trace name context forever,level 12
oradebug event 10046 trace name context off
oradebug tracefile_name
----------------------分割线-------------------------
tkprof 10046test . trc 10046test . txt sys = no
下面是trc中一个sql
us 单位是微秒
,217084是0.2s,
到了hash group by 用了1200s。但是这个返给 hash group by 的行数只有2071行,如果当时pga特别紧张,那么做hash table可能通过临时表,但是IO即便再慢也不会用到1200s的时间,除非说IO出了问题,如果是IO的问题,那么一定会有等待,但是这里并没有。再看上边的总结hash group by发生在fetch阶段,一共fetch1071次,也是1071行,说明一次fetch一行,一共花了才7.62s。
那么hash group by的时间到底花费到哪里了呢?在tkprof中似乎找不到原因,我们去看裸文件。复制sql id 到裸文件中去找sql id
parse之后你会得到一个临时的cursor number
然后我们找 fetch #18446741324872605848
再往后就很快了,这里就不截图了
C 比较重要的指标,代表本步操作消耗的CPU 时间片; 9i以后单位为microsecond 都s
E
Elapsed Time ,代表本步操作消耗的自然时间, 9i以后单位为microsecond
P
物理读的数目
CR
一致性读引起的buffer get 数目,cr过高说明正在更新的dml频繁。
CU
当前读current read引起的buffer get数目
mis
=0 该指标说明library cache未发生miss,则本次解析 我们没有需要硬解析 而是采用软解析或者更好的方式。 硬解析在Oracle中成本是很高的。 注意由于在任何阶段包括PARSE/EXECUTE/FETCH阶段都可能发生游标被age out的现象,所以在这些阶段都会打印mis指标。如果mis>0则说明可能发生了硬解析。
r 处理的行数
DEP
=0 代表该SQL的递归深入(recursive depth),因为递归SQL可能再引发下一层的递归SQL, 如果DEP=0则说明不是递归SQL,如果DEP>0则说明是递归SQL。
比如说一个plsql,plsql的入口文本 p1这个path是0、就是用户直接调用的那个入口,里面的sql是1,比如这个sql里面再用到函数,那么就是2。
plh plan的hash value。上边的例子一看就是个plsql,因为如果是sql的话,只可能=0。
og 标示优化器的模式
0 游标不可见 或 优化器环境未合理创建
1 – ALL_ROWS
2 - FIRST_ROWS
3 – RULE
4 – CHOOSE
这里的一个fetch 相当于awr中user call,用户去做一个操作的入口函数,比如你fetch的时候,oracle内部会调用很多函数、调用操作系统函数,最后把数据捞出来,但是用户只需要看到fetch接口就好了,c就表示我这一个动作到把数据拿出来,花的cpu时间。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29990276/viewspace-1448962/ ,如需转载,请注明出处,否则将追究法律责任。