① 0级:SQL_TRACE=FASLE 停止sql跟踪
② 1级:SQL_TRACE=TRUE 标准sql跟踪
③ 4级:1级+绑定变量
④ 8级:4级+等待事件
⑤ 12级:4级+8级
2.设置10046事件
必须具有alter session权限
追踪文件路径:show parameter user_dump_dest
session 级别: alter session set events '10046 trace name context forever,level 4';
system 级别 : alter system set events ’10046 trace name context forever,level 4’;
关闭用户跟踪 : alter session set events '10046 trace name context off';
设置标记:alter session set tracefile_identifier='mytrace';
3.使用oradebug
设置非本会话的跟踪需要采用oradebug
--用如下语句找出要跟踪的spid
select * from v$session a where audsid = userenv('sessionid'); --查询当前的sessionid
select s.USERNAME,
s.OSUSER,
s.SID,
s.PADDR,
s.PROCESS,
p.spid os_process_id,
p.pid oracle_process_id
from v$session s, v$process p
where s.paddr = p.addr
and s.username = upper('SYS')
and s.SID = 160;
--设置跟踪进程id。
oradebug setospid 5672或
oradebug setorapid 15
--设置跟踪文件大小无限制
oradebug unlimit;
--设置跟踪,级别8
oradebug event 10046 trace name context forever,level 8;
--查询跟踪级别
oradebug eventdump session
--关闭跟踪
oradebug event 10046 trace name context off;
获取跟踪文件的位置
--获取任意会话跟踪文件位置
SQL> oradebug setospid 8916
SQL> oradebug tracefile_name
2)sql获取跟踪文件
--sql查看当前session跟踪文件位置
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;
4.tkprof翻译trace文件