有时需要找到oracle在客户端对应的进程,这时分两种情况。
情况一
客户端不是通过connection pool等发起的连接。这时可以通过v$session这个视图查到客户端进程。如下所示,
SQL> SELECT SID,SERIAL# ,USERNAME,OSUSER,PROCESS,MACHINE,PORT,SQL_ID FROM V$SESSION WHERE MACHINE='myserver' and USERNAME='SUMSAPP';
SID SERIAL# USERNAME OSUSER PROCESS MACHINE PORT SQL_ID
---------- ---------- ------------------------------ ------------------------------ ------------ -------------------- ---------- -------------
126 42 SUMSAPP sumsadm 1234 myserver 49748
140 30 SUMSAPP root 4691 myserver 39751
209 10358 SUMSAPP sumsadm 1234 myserver 60177
216 6127 SUMSAPP sumsadm 1234 myserver 48390
243 2932 SUMSAPP sumsadm 1234 myserver 41324
279 51093 SUMSAPP sumsadm 1234 myserver 54725
306 59854 SUMSAPP sumsadm 1234 myserver 42129
如图,第二行就是我发起的进程。可以看到机器的名字,客户端机器上的进程id,端口等信息
情况二
客户端是通过connection pool发起的连接,如上面代码中其他行,process为1234
这时需要去客户端机器上通过netstat -ap | grep port来找到进程