我们知道mts下存在多个process为一个session服务的情况,这样如果想开启该session的trace功能,那么产生的trace文件势必就有多个文件,如何把这个多个文件中的session信息提取出来就显的尤为重要,oracle提供的trcsess工具可以帮助我们,通过trcsess处理之后的tracefile就可以通过tkprof继续处理了。
[@more@]SQL> select distinct sid from v$mystat;
SID
----------
138
SQL> select saddr,paddr,server,sid,serial# from v$session where sid=138;
SADDR PADDR SERVER SID SERIAL#
-------- -------- --------- ---------- ----------
697267AC 6964C00C SHARED 138 7
SQL> select pid,spid from v$process where addr='6964C00C';
PID SPID
---------- ------------
14 4032
SQL> select name from v$shared_server where paddr='6964C00C';
NAME
----
S000
SQL>
--====================================
SQL> select distinct sid from v$mystat;
SID
----------
129
SQL> select saddr,paddr,server,sid,serial# from v$session where sid=129;
SADDR PADDR SERVER SID SERIAL#
-------- -------- --------- ---------- ----------
6971BEA4 6964C00C SHARED 129 17
SQL> select name from v$shared_server where paddr='6964C00C';
NAME
----
S000
SQL> declare
2 i number :=0;
3 j number :=0;
4 begin
5 loop
6 j:=i+1;
7 i:=i+1;
8 end loop;
9 end;
10 /
--=========================================
SQL> select distinct sid from v$mystat;
SID
----------
138
SQL> select saddr,paddr,server,sid,serial# from v$session where sid=138;
SADDR PADDR SERVER SID SERIAL#
-------- -------- --------- ---------- ----------
697267AC 6965074C SHARED 138 7
SQL> select name from v$shared_server where paddr='6965074C';
NAME
----
S001
SQL> select pid,spid from v$process where addr='6965074C';
PID SPID
---------- ------------
26 2808
SQL> alter session set sql_trace=true;
会话已更改。
SQL> select count(*) from t;
COUNT(*)
----------
6
SQL> select * from t;
ID
----------
1
1
2
3
4
2
已选择6行。
SQL> alter session set sql_trace=false;
会话已更改。
SQL> show parameter _dump_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest string E:ORACLEPRODUCT10.2.0ADMIN
TESTBDUMP
core_dump_dest string E:ORACLEPRODUCT10.2.0ADMIN
TESTCDUMP
user_dump_dest string E:ORACLEPRODUCT10.2.0ADMIN
TESTUDUMP
SQL> host
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:>e:
E:>cd E:oracleproduct10.2.0adminTESTbdump
E:oracleproduct10.2.0adminTESTbdump>dir *4032*
驱动器 E 中的卷没有标签。
卷的序列号是 F6E5-4B31
E:oracleproduct10.2.0adminTESTbdump 的目录
2009-06-24 22:44 17,363 test_s000_4032.trc
1 个文件 17,363 字节
0 个目录 2,366,357,504 可用字节
E:oracleproduct10.2.0adminTESTbdump>dir *2808*
驱动器 E 中的卷没有标签。
卷的序列号是 F6E5-4B31
E:oracleproduct10.2.0adminTESTbdump 的目录
2009-06-24 22:44 42,603 test_s001_2808.trc
1 个文件 42,603 字节
0 个目录 2,366,357,504 可用字节
--这里要特别注意的是10g以mts模式连接的session其对应的process产生的tracefile放在了bdump下,而不是udump下。
E:oracleproduct10.2.0adminTESTbdump>trcsess
oracle.ss.tools.trcsess.SessTrcException: SessTrc-00002: 会话跟踪用法错误: 传递
了错误的参数。
trcsess [output=] [session=] [clientid=>] [service=] [action=] [module=] file names>
output= output destination default being standard output.
session= session to be traced.
Session id is a combination of session Index & session serial number e.g. 8.13.
clientid= clientid to be traced.
service= service to be traced.
action= action to be traced.
module= module to be traced.
Space separated list of trace files with wild card '*' suppor
ted.
E:oracleproduct10.2.0adminTESTbdump>trcsess output=out.txt session=138.7 t
est_s000_4032.trc test_s001_2808.trc
E:oracleproduct10.2.0adminTESTbdump>dir out.txt
驱动器 E 中的卷没有标签。
卷的序列号是 F6E5-4B31
E:oracleproduct10.2.0adminTESTbdump 的目录
2009-06-24 22:52 56,948 out.txt
1 个文件 56,948 字节
0 个目录 2,366,300,160 可用字节
E:oracleproduct10.2.0adminTESTbdump>tkprof out.txt out1.txt
TKPROF: Release 10.2.0.1.0 - Production on 星期三 6月 24 22:53:38 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
E:oracleproduct10.2.0adminTESTbdump>dir out1.txt
驱动器 E 中的卷没有标签。
卷的序列号是 F6E5-4B31
E:oracleproduct10.2.0adminTESTbdump 的目录
2009-06-24 22:53 29,384 out1.txt
1 个文件 29,384 字节
0 个目录 2,366,259,200 可用字节
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/19602/viewspace-1023465/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/19602/viewspace-1023465/