--1.查找要跟踪的session
[oracle@bj udump]$ ps -ef
UID PID PPID C STIME TTY TIME CMD
oracle 6279 1 0 16:31 ? 00:00:01 oraclenewadm (LOCAL=NO)
。。。。。
oracle 6375 1 0 17:34 ? 00:00:00 oraclenewadm (LOCAL=NO)
oracle 6376 6189 0 17:34 pts/0 00:00:00 ps –ef
因为我是刚刚登陆的,所以基本上最后一个进程肯定是我了。
[oracle@bj udump]$ sqlplus "/as sysdba"
SQL*Plus: Release 10.1.0.3.0 - Production on Thu Nov 25 17:34:40 2004
Copyright (c) 1982, 2004, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options
--执行查询语句,查询session 基本信息
SQL> SELECT SID, SERIAL#, USERNAME, MACHINE
2 FROM V$SESSION B
3 WHERE b.paddr = (SELECT addr
4 FROM v$process c
5 WHERE c.spid = '&pid');
Enter value for pid: 6375
old 5: WHERE c.spid = '&pid')
new 5: WHERE c.spid = '6375')
SID SERIAL# USERNAME MACHINE
------------------------------------------
254 489 ADMAPP WORKGROUP/LANLIHUA
--确定session信息后,执行跟踪程序包
SQL> exec dbms_system.set_sql_trace_in_session(254,489,true);
PL/SQL procedure successfully completed.
执行DML等操作 ....
SQL> exec dbms_system.set_sql_trace_in_session(254,489,false);
PL/SQL procedure successfully completed.
--结束跟踪,察看日志:
[oracle@bj udump]$ ls -l
total 22096
。。。。
-rw-r----- 1 oracle oinstall 9636 Nov 25 17:35 newadm_ora_6375.trc
刚发现,原来文件名的最后就是进程号,刚才没有发现。
[oracle@bj udump]$ cat newadm_ora_6375.trc
--分析生成的跟踪文件,确定问题原因,这个方法很好