Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6559564
  • 博文数量: 1005
  • 博客积分: 8199
  • 博客等级: 中将
  • 技术积分: 13071
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-25 20:19
个人简介

脚踏实地、勇往直前!

文章分类

全部博文(1005)

文章存档

2020年(2)

2019年(93)

2018年(208)

2017年(81)

2016年(49)

2015年(50)

2014年(170)

2013年(52)

2012年(177)

2011年(93)

2010年(30)

分类: Oracle

2012-07-04 20:29:16

环境:
OS:Red Hat Linux As 5
DB:10.2.0.4
 
我们在执行某个语句的时候,如何知道这些语句的执行情况,比如执行计划,物理读,逻辑读,我们可以通过跟踪这个会话,生成后台trc文件,使用tkprof来格式化输出这些语句的执行信息.
 
1.跟踪当前的sid
SELECT SYS_CONTEXT ('USERENV', 'SID') sid FROM DUAL;
SID
-------------------
159
 
2.开始跟踪该会话
SQL>alter session set sql_trace=true;
 
3.执行如下语句
 
SQL> create table tb_test
(
 id number,
 name varchar2(60)
);
 
declare
begin
  for i in 1 .. 1000 loop
    insert into tb_test values (i, i);
  end loop;
  commit;
end;
 
4.结束跟踪该会话
SQL>alter session set sql_trace=false;
当然跟踪会话还可以使用如下两个过程实现
sys.dbms_system.set_sql_trace_in_session(sid,serial#,true);  -- 开始跟踪
sys.dbms_system.set_sql_trace_in_session(sid,serial#,false); -- 结束跟踪
 
 
结束跟踪该会话后,会在udump目下生成trc文件,可以通过如下语句获取到该文件所在的路径:
Select Rtrim(c.Value, '/') || Decode(e.Plat_Id, 1, '\', '/') ||
       d.Instance_Name || '_ora_' || Ltrim(To_Char(a.Spid)) || '.trc' Trace_File
  From V$process a,
       V$session b,
       V$parameter c,
       V$instance d,
       (Select Case
                 When t.Banner Like '%Windows%' Then
                  1
                 When t.Banner Like '%Linux%' Then
                  2
                 When t.Banner Like '%AIX%' Then
                  3
                 When t.Banner Like '%Solaris%' Then
                  4
               End Plat_Id
          From V$version t
        Where t.BANNER Like '%TNS%'
         ) e
 Where a.Addr = b.Paddr
   And b.Sid = &your_sid
   And c.Name = 'user_dump_dest';
------------------------------------
/u01/app/oracle/admin/oracl/udump/oracl_ora_6108.trc
 
5.使用tkprof输出到test.txt
$tkprof /u01/app/oracle/admin/oracl/udump/oracl_ora_6108.trc /u01/tkprof_dir/test.txt
 
 
-- The End --
阅读(2953) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~