视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SQLTRACE和TKPROF的使用步骤
2020-11-09 11:49:08 责编:小采
文档


1.设置参数文件 设置三个参数timed_statistics、user_dump_dest、max_dump_file_size。 timed_staticstices 用于启动或禁止对定

1.设置参数文件 timed_staticstices

用于启动或禁止对定时统计信息(如CPU时间、占用时间),以及动态性能表中多种统计信息的收集功能

SQL>alter session set timed_statistics = true;

SQL>alter system set timed_statistics = true;

max_dump_file_size

当实例层启用SQL TRACE的时候,在每次请求服务器的时候,都将在跟踪文件中产生一个文本行,这些文件的最大尺寸受限于初始化参数的设置。默认为500(blocks)。若里面的数据被截断则增大SIZE。若为UNLIMITED则意味着没有上限。

user_dump_dest

设置跟踪文件的存储位置。默认为admin/用户/udump;

SQL>alter system set user_dump_dest = 'newdir';

2.启动SQL TRACE实用工具

对会话启动关闭SQL TRACE

SQL>alter session set sql_trace = true;

SQL>alter session set sql_trace = false;

SQL>exec SYS.DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION =(SID,SERIAL#,TRUE);

SQL>exec SYS.DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION =(SID,SERIAL#,,FALSE);

对用户实例启动关闭SQL TRACE

SQL>alter system set sql_trace = true;

SQL>alter system set sql_trace = false;

3.使用tkprof格式化trace文件

Usage

tkprof inputfile outputfile [optional | parameters ]

(tkprof tracefile outputfile [explain= ] [table= ] [print= ] [insert= ] [sys= ] [sort= ])

例:1.tkprof tracefile outfile [explain=user/password] [options...];

例:2.tkprof uat_ora_14936.trc trace.txt sort=(prsdsk,exedsk,fchdsk) print=10 explain=apps/apps table=apps.temp_plan_table_a insert=storea.sql sys=no

tkprof参数和选项

  • explain=user/password 执行explain命令将结果放在SQL trace的输出文件中
  • table=schema.table 指定tkprof处理sql trace文件时临时表的模式名和表名
  • insert=scriptfile 创建一个文件名为scriptfile的文件,包含了tkprof存放的输出sql语句
  • sys=[yes/no] 确定系统是否列出由sys用户产生或重调的sql语句
  • print=number 将仅生成排序后的第一条sql语句的输出结果
  • record=recordfile 这个选项创建一个名为recorderfile的文件,包含了所有重调用的sql语句
  • sort=sort_option 按照指定的方法对sql trace的输出文件进行降序排序
  • sort_option 选项
  • prscnt 按解析次数排序
  • prscpu 按解析所花cpu时间排序
  • prsela 按解析所经历的时间排序
  • prsdsk 按解析时物理的读操作的次数排序
  • prsqry 解析时以一致模式读取数据块的次数排序
  • prscu 按解析时以当前读取数据块的次数进行排序
  • execnt 按执行次数排序
  • execpu 按执行时花的cpu时间排序
  • exeela 按执行所经历的时间排序
  • exedsk 按执行时物理读操作的次数排序
  • exeqry 按执行时以一致模式读取数据块的次数排序
  • execu 按执行时以当前模式读取数据块的次数排序
  • exerow 按执行时处理的记录的次数进行排序
  • exemis 按执行时库缓冲区的错误排序
  • fchcnt 按返回数据的次数进行排序
  • fchcpu 按返回数据cpu所花时间排序
  • fchela 按返回数据所经历的时间排序
  • fchdsk 按返回数据时的物理读操作的次数排序
  • fchqry 按返回数据时一致模式读取数据块的次数排序
  • fchcu 按返回数据时当前模式读取数据块的次数排序
  • fchrow 按返回数据时处理的数据数量排序
  • 4.举例:

    trace其他session

    查询某用户的session的SID及SERIAL#

    $sqlplus / as sysdba

    SQL>select s.USERNAME,s.SID,s.SERIAL#,s.COMMAND from v$session s

    where s.USERNAME='ETOH' ; --注意用户名用大写

    SQL>exec dbms_system.SET_SQL_TRACE_IN_SESSION(12,73,true);

    等待被跟踪session活动一段时间

    SQL>exec dbms_system.SET_SQL_TRACE_IN_SESSION(12,73,false);

    --查询生成的.trc文件号

    SQL>SELECT d.value || '/' || lower(rtrim(i.instance, chr(0))) || '_ora_' ||

    p.spid || '.trc' trace_file_name

    from (select p.spid

    from v$session s, v$process p

    where s.sid = &sid

    and s. SERIAL# = &serial#

    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;

    --使用tkprof生成分析文件

    $tkprof /u01/app/Oracle/admin/center/udump/_ora_24012.trc/u01/app/oracle/admin/center/udump/center_ora_24012.txt aggregate=yes sys=no sort=fchela(此例中将执行最耗时的sql放在分析文件的开头)


    trace本session

    查询本session信息

    SQL>SELECT Sid, Serial# FROM V$session WHERE sid = Sys_Context ( 'USERENV' , 'SID' );

    SQL>alter session set sql_trace=true;

    SQL>#SQL Statements#

    SQL>alter session set sql_trace=false;

    查询生成的trace文件名

    SQL>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;

    tkprof格式化处理

    $tkprofcenter_ora_24012.trccenter_ora_24012.txt {一系列参数}

    下载本文
    显示全文
    专题