ITPub博客

首页 > Linux操作系统 > Linux操作系统 > TKPROF

TKPROF

原创 Linux操作系统 作者:landf 时间:2011-03-23 11:57:47 0 删除 编辑
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博客 ” ,链接:http://blog.itpub.net/14359/viewspace-690255/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-02-14

  • 博文量
    68
  • 访问量
    494694