如何辨别同台机器多个客户端sql跟踪

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:423

经常会碰到客户端多个sqlplus连接oracle服务器,却不知道该如何判断哪个客户端对应哪个trace文件。其实自己之前也很迷茫。在对着文档深入看了v$session何v$process之后,一切问题都迎刃而解。

环境:
oracle服务器:sun os5.10,oracle 10.2.0
客户端:xp,开启2个sqlplusw。

开启客户端之后,在Solaris上ps -ef|grep ora一下,查看一下相关进程。

-bash-3.00$ ps -ef | grep ora

oracle 5301 1 0 14:43:27 ? 0:00 oraclekay (LOCAL=NO)

oracle 5316 5314 0 14:44:57 ? 0:00 oraclekay (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle 5314 5309 0 14:44:54 pts/1 0:00 sqlplus scott/tiger

oracle 5299 1 0 14:43:23 ? 0:00 oraclekay (LOCAL=NO)

从上图可以看到一个本地连接(通过sqlplus),两个远程连接(LOCAL=NO),这两个即为在xp上的客户端。
好了,现在都已经连上了,下面就可以通过查询视图v$session和v$process得到他们生成的trace文件号了。

不多说了,先跑下这个脚本,看下结果。

sys@KAY> select s.sid, s.serial#, s.username, s.process, p.pid, p.spid from v$session s, v$process p

2 where s.paddr=p.addr

3 and s.username is not null

4 /

SID SERIAL# USERNAME PROCESS PID SPID

---------- ---------- ------------------------------ ------------ ---------- ------------

142 8220 SCOTT 5680:4180 18 5299

149 7393 SCOTT 6040:4760 20 5301

141 4411 SYS 5314 21 5316

从图中可以知道目前共有三个用户连接到服务器。其中两个scott用户是通过远端连接的,它们生成的trace文件的进程号分别为5299和5301.区分的关键就是process列,前面的5680和6040就是客户端对应的操作系统进程号(注意是客户端所在的系统的进程号)。打开xp的任务管理器,
[img]file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/HPQ76PZYU]Z0[TQE6M2E_OS.jpg[/img]
这样就可以对应上了。之后的事情就是查看trace文件了,这个就不多说了。

本文标签:
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】