1、SQL TRACE 的启动与关闭:
在使用SQL TRACE之前,需要先查看oracle的初始参数是否设置好,有三个参数需要正确设置,分别是timed_statistics=true、user_dump_dest=跟踪文件存放位置、max_dump_file_size=unlimited、,这个值可以自己设定,其中timed_statistics参数用于是否可以在系统中执行跟踪,为true是表示可以执行跟踪。
其实在oracle10gR2中这几个参数都是已经设置好了的不用多做设置。 确定好这几个参数之后,就可以开始跟踪执行了。你可以在sys用户下执行跟踪,或者其他具有权限的用户下执行跟踪(不过当我在scott用户下执行跟踪之后发现没有跟踪文件)。
(1)开启跟踪:
Alter session set sql_trace true;
(2)执行需要跟踪的操作,比如
Select ename from emp where empno=7788;
(3)关闭跟踪
Alter session set sql_trace false;
2、转换、查询跟踪文件
我的初始参数user_dump_dest参数的值为/home/oracle/orcl/udump,则跟踪完成之后,我再这个目录下将看到这个跟踪文件,但是当我打开它是发现里面有很多跟踪文件,我不知道哪个文件时我刚才的跟踪文件,所以接下来,我再回到sql*plus里面查询我执行跟踪的会话的进程id,因为跟踪文件的文件名的格式是(实例名_ora_进程id.trc),我的实例名是orcl,所以我执行查询来确定进程id,查询之前先给用户赋予查询v$process、v$session和v$mystat视图的权限:
Grant select on v_$process to scott;
Grant select on v_$session to scott;
Grant select on v_$mystat to scott;
还好,在赋予权限的时候我时刻记得,在oracle中,我平时所访问的v$视图其实就是一个同义词,她不是实际的视图,而是由底层视图创建的同义词,而这些视图的底层视图与这些视图名称极为相似,比如v$process的底层视图是v_$process,所以在赋权时应该将v_$process视图的查询权限赋给用户。赋权完成之后就可以执行查询了:
Select spid
From v$process p,v$session s
Where p.addr=s.paddr and s.sid=(select sid from v$mystat where
rownum=1);
在返回的查询结果中,spid(也就是会话进程id)为2842,则我确定我刚才的跟踪文件为orcl_ora_2842.trc。
确定了跟踪文件就可以对其进行格式转换了:
Tkprof orcl_ora_2842.trc orcl_ora_2842_1.prf explain=system/password;
这不是在sql*plus中运行,而是在终端中运行。其实这个转换并不是必须的,但是阅读orcl_ora_2842.trc确实有点费劲,所以我用tkprof实用程序对跟踪文件进行转换,但是这种转换不会包含原始跟踪文件的所有信息,她会丢失一些信息,但是转换之后便于阅读。转换完毕,我先打开它,看看这些跟踪信息···
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25244847/viewspace-693287/,如需转载,请注明出处,否则将追究法律责任。