1.首先查看当前系统是否会产出trace文件
show parameter sql_trace;
若value为false,则不会产出,运行以下命令产出文件
alter session(system) set sql_trace=true;
①system跟踪整个数据库实例,所有进程都会被跟踪,包括后台进程,会导致数据库下降明显,不推荐使用
②session会话级跟踪,sql_trace的通常使用方式是仅跟踪一个会话
2.执行几条sql,然后开始查看文件
文件位置一般用以下sql查询
新方法(11g):select p.tracefile from v$mystat m, v$session s, v$process p where m.statistic#=1 and s.sid=m.sid and p.addr=s.paddr
老方法:(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,
----> 获取当前会话的系统进程id
(select t.instance from v$thread t, v$parameter v where v.name='thread' and (v.value=0 or t.thread#=to_number(v.vallue))) i, ------>获取实例包
(select value from v$parameter where name='user_dump_dest') d ------>获取跟踪文件主路径
es:/oracle/produce/18.3/rdbms/log/mcam1_ora_19624.trc)
找到文件后 将文件通过tkprof工具格式化
①先到oracle的安装目录bin文件夹下查看是否有该工具 es:/oracle/product/18.3/db_1/bin
②然后将文件格式化,服务器运行命令
tkprof .trc的路径 格式化后文件存储路径及名称 执行计划(用户名/密码) 是否打印SYS用户的操作 是否将所有相同的sql在输入文件中做合并
es:tkprof mcam1_ora_19624.trc tk_test.prf explain=oracle/oraclepwd sys=no aggregate=no
格式化cat查看或者 ftp下载下来查看均可
可根据sql_id查询相应的sql执行过程,于v$sql/V$sqlarea....取sql_id