Oracle具有打开相当低层的跟踪功能的能力:
1,启动相关会话的跟踪能力:
方法一、
SQL>conn hr/hr
SQL>alter session set sql_trace=true;
SQL>conn / as sysdba
查询v$session视图,获取进程信息
SQL>select sid,serial#,username,machine from v$session;
SQL>exec dbms_system.set_sql_trace_in_session(sid,serial#,true);
方法三、
SQL>conn hr/hr
SQL>alter session set events '10046 trace name context forever,level ';
为:
1启用标准SQL_TRACE工具(同SQL_TRACE=TRUE)
4启用SQL_TRACE并捕捉绑定变量值
8启用SQL_TRACE并捕捉等待事件
12启用SQL_TRACE并捕捉绑定变量值和等待事件
2,运行TKPROF
在DB内执行某些活动并创建了跟踪文件;接下来用查询获得跟踪文件名
第一个查询针对Windows,它使用的是Oracle8i以及更早的版本建立的标准8.3的文件名约定。
select c.value||'\ORA'||to_char(a.spid,'fm00000')||'.trc'
from v$process a,v$session b,v$parameter c
where a.addr=b.paddr
and b.audsid=sys_context('userenv','sessionid')
and c.name='user_dump_dest'
/
第二个查询针对Unix和Oracle9i及后来版本的Windows(它们把文件名固定在平台上),但对于不同的Unix变异需要做少许的更改(此版本运行在Solaris和Linux上)。
select rtrim(c.value,'/')||'/'||d.instance_name||
'_ora_'||ltrim(to_char(a.spid))||'.trc'
from v$process a,v$session b,v$parameter c,v$instance d
where a.addr=b.paddr
and b.audsid=sys_context('userenv','sessionid')
and c.name='user_dump_dest'
/
select rtrim(c.value,'\')||'\'||d.instance_name||
'_ora_'||ltrim(to_char(a.spid))||'.trc'
from v$process a,v$session b,v$parameter c,v$instance d
where a.addr=b.paddr
and b.audsid=sys_context('userenv','sessionid')
and c.name='user_dump_dest'
/
运行完这些查询后,要退出SQL*Plus(或正在使用的任何工具),以完全关闭跟踪文件,使跟踪文件的所有信息都是可用的。
3,创建TKPROF报告
$tkprof 跟踪文件名 tk.prf
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14359/viewspace-690255/
,如需转载,请注明出处,否则将追究法律责任。