v$process包含了当前系统oracle运行的所有进程信息。常被用于将oracle或服务进程的操作系统进程ID与数据库session之间建立联系。
SQL> desc v$process
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ADDR RAW(4) --进程对象地址
PID NUMBER --oracle进程ID
SPID VARCHAR2(12) --操作系统进程ID
USERNAME VARCHAR2(15) --操作系统用户名
SERIAL# NUMBER
TERMINAL VARCHAR2(30)
PROGRAM VARCHAR2(48)
TRACEID VARCHAR2(255)
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
数据库中所有的进程:
SQL> select ADDR,PID,SPID,USERNAME from v$process;
ADDR PID SPID USERNAME
-------- ---------- ------------ ---------------
29E1DA3C 1
29E1DFF8 2 2576 oracle
29E1E5B4 3 2578 oracle
29E1EB70 4 2580 oracle
29E1F12C 5 2582 oracle
29E1F6E8 6 2584 oracle
29E1FCA4 7 2586 oracle
29E20260 8 2588 oracle
29E2081C 9 2590 oracle
29E20DD8 10 2592 oracle
29E21394 11 2594 oracle
ADDR PID SPID USERNAME
-------- ---------- ------------ ---------------
29E21950 12 2596 oracle
29E21F0C 13 2598 oracle
29E224C8 14 2600 oracle
29E22A84 15 2603 oracle
29E23040 16 2605 oracle
29E235FC 17 2607 oracle
29E23BB8 18 2609 oracle
29E24174 19 2611 oracle
29E252A8 22 2631 oracle
29E26998 26 2633 oracle
已选择21行。
下面是根据操作系统spid关联到会话的sid:
SQL> !
[oracle@linux ~]$ ps -ef | grep LOCAL=YES
oracle 2603 2573 0 15:12 ? 00:00:01 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 3125 3094 0 16:27 pts/1 00:00:00 grep LOCAL=YES
[oracle@linux ~]$ exit
exit
SQL> select ADDR,PID,SPID,USERNAME from v$process where spid = 2603;
ADDR PID SPID USERNAME
-------- ---------- ------------ ---------------
29E22A84 15 2603 oracle
SQL> select s.sid,s.username,s.osuser,s.machine from v$session s,v$process p where s.paddr=p.addr and p.spid=2603;
SID USERNAME OSUSER MACHINE
---------- ------------------------------ ------------------------------ ----------------------------------------------------------------
159 SYS oracle linux