环境:
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 --
阅读(3001) | 评论(0) | 转发(0) |