11g,v$process中增加了一个tracefile字段,该字段记录的是进程产生的tracefile,一个看起来不起眼的字段却给我带来了很大的方便,以前我们要确认进程所产生的trace文件需要通过下面方法:
1.首先需要知道当前的sessionid
SQL> select sid from v$mystat where rownum=1;
SID
----------
144
2.之后需要知道该session所对应的process address
SQL> select paddr from v$session where sid=144;
PADDR
--------
22695850
3.根据process address进一步需要知道os process(thread) id
SQL> select spid from v$process where addr='22695850';
SPID
------------------------
3960
4.当然还的需要知道trace file的格式:sid_ora_spid.trc,这里指的是服务器进程所产生的trace file,不包括后台进程,后台进程对应的trace file名格式:sid_(pmon,smon,dbwn,lgwr...)_spid.trc
5.简单的测试一下,以下面的命令生成的trace file为例
SQL> alter database backup controlfile to trace noresetlogs;
数据库已更改。
以前我们不仅需要知道session对应的spid,还得需要知道参数user_dump_dest的值
SQL> show parameter user_dump_dest
NAME
TYPEVALUE
------------------------------------ ----------- ------------------------------
user_dump_dest
stringc:\app\wch\diag\rdbms\orcl\orc
l\trace
SQL> host
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\>cd c:\app\wch\diag\rdbms\orcl\orcl\trace
--知道了参数user_dump_dest的值之后就可以在该参数指定的目录下来寻找process(thread):spid所产生的trace file:上面的命令(alter database backup controlfile to trace noresetlogs)产生的trace file的确在user_dump_dest指定的目录下找到了。
C:\app\wch\diag\rdbms\orcl\orcl\trace>dir *3960*
驱动器 C 中的卷是 IBM_PRELOAD
卷的序列号是 5059-B9D7
C:\app\wch\diag\rdbms\orcl\orcl\trace 的目录
2008-12-1422:05
4,136 orcl_ora_3960.trc
2008-12-1422:05
122 orcl_ora_3960.trm
2 个文件
4,258 字节
0 个目录3,021,438,976 可用字节
C:\app\wch\diag\rdbms\orcl\orcl\trace>exit
SQL> desc v$process
名称
是否为空? 类型
----------------------------------------- -------- ----------------------------
ADDR
RAW(4)
PID
NUMBER
SPID
VARCHAR2(24)
USERNAME
VARCHAR2(15)
SERIAL#
NUMBER
TERMINAL
VARCHAR2(16)
PROGRAM
VARCHAR2(64)
TRACEID
VARCHAR2(255)
TRACEFILE
VARCHAR2(513)
BACKGROUND
VARCHAR2(1)
LATCHWAIT
VARCHAR2(8)
LATCHSPIN
VARCHAR2(8)
PGA_USED_MEM
NUMBER
PGA_ALLOC_MEM
NUMBER
PGA_FREEABLE_MEM
NUMBER
PGA_MAX_MEM
NUMBER
--上面的查找是那么的"艰辛",再来看看11g的表现是那么的轻松:
SQL> select sid,paddr from v$session where sid=144;
SID PADDR
---------- --------
144 22695850
SQL> select tracefile from v$process where addr='22695850';
TRACEFILE
--------------------------------------------------------------------------------
c:\app\wch\diag\rdbms\orcl\orcl\trace\orcl_ora_3960.trc
SQL>
|