(转):学习Oracle动态性能表-(12)-V$PROCESS

上一篇 / 下一篇  2009-09-24 14:01:13 / 个人分类:oracle

V$PROCESS

  本视图包含当前系统oracle运行的所有进程信息。常被用于将oracle或服务进程的操作系统进程ID数据库session之间建立联系。在某些情况下非常有用:

1.        如果数据库瓶颈是系统资源(如:cpu,内存),并且占用资源最多的用户总是停留在某几个服务进程,那么进行如下诸项:

l        找出资源进程

l        找出它们的session,你必须将进程与会话联系起来。

l        找出为什么session占用了如此多的资源

2.        SQL跟踪文件名是基于服务进程的操作系统进程ID。要找出session的跟踪文件,你必须将session与服务进程联系起来。

3.        某些事件,如rdbms ipc reply,鉴别session进程的Oracle进程ID在等什么。要发现这些进程在做什么,你必须找出它们的session

4.        你所看到的服务器上的后台进程(DBWR,LGWR,PMON)都是服务进程。要想知道他们在做什么,你必须找到他们的session

V$PROCESS中的常用列

l        ADDR:进程对象地址

l        PIDoracle进程ID

l        SPID:操作系统进程ID

V$PROCESS中的连接列

Column                       View                            Joined Column(s)

ADDR                          V$SESSION                 PADDR

示例:

1.        查找指定系统用户在oracle中的session信息及进程id,假设操作系统用户为:junsansi

selects.sid,s.SERIAL#, s.username,p.spid

fromv$session s, v$process p

wheres.osuser ='junsansi'

  ands.PADDR = p.ADDR

2.        查看锁和等待

SELECT/*+ rule */

lpad(' ', decode(l.xidusn,0,3,0)) || l.oracle_username User_name,

o.owner,o.object_name,o.object_type,s.sid,s.serial#,p.spid

FROMv$locked_object l, dba_objects o, v$session s, v$process p

WHEREl.object_id = o.object_id

  ANDl.session_id = s.sidands.paddr = p.addr

ORDERBYo.object_id, xidusnDESC

3.        

附注:

  在linux环境可以通过ps查看进程信息包括pid,windows中任务管理器的PIDv$processpid不能一一对应,这块在oracleDocument中也没有找到介绍,后来google了一下,有资料介绍说是由于windows是多线程服务器,每个进程包含一系列线程。这点于unix等不同,Unix每个Oralce进程独立存在,在Nt上所有线程由Oralce进程衍生。

  要在windows中显示oracle相关进程pid,我们可以通过一个简单的sql语句来实现。

SELECTs.SID, p.pid, p.spid signaled, s.osuser, s.program

FROMv$process p, v$session s

WHEREp.addr = s.paddr;

SID

PID

SIGNALED

OSUSER

PROGRAM

1

2

2452

SYSTEM

ORACLE.EXE

2

3

2460

SYSTEM

ORACLE.EXE

3

4

2472

SYSTEM

ORACLE.EXE

4

5

2492

SYSTEM

ORACLE.EXE

5

6

2496

SYSTEM

ORACLE.EXE

6

7

2508

SYSTEM

ORACLE.EXE

7

8

2520

SYSTEM

ORACLE.EXE

8

9

2524

SYSTEM

ORACLE.EXE

10

12

1316

JSS"junsansi

PlSqlDev.exe

9

13

3420

JSS"junsansi

PlSqlDev.exe

13

14

660

JSS"junsansi

PlSqlDev.exe

还可以通过和v$bgprocess连接查询到后台进程的名字:

SELECTs.SID SID, p.spid threadid, p.program processname, bg.NAMENAME

FROMv$process p, v$session s, v$bgprocess bg

WHEREp.addr = s.paddr

  ANDp.addr = bg.paddr

  ANDbg.paddr <>'00';

SID

THREADID

PROCESSNAME

NAME

1

2452

ORACLE.EXE

PMON

2

2460

ORACLE.EXE

DBW0

3

2472

ORACLE.EXE

LGWR

4

2492

ORACLE.EXE

CKPT

5

2496

ORACLE.EXE

SMON

6

2508

ORACLE.EXE

RECO

7

2520

ORACLE.EXE

CJQ0

8

2524

ORACLE.EXE

QMN0


TAG:

 

评分:0

我来说两句

Open Toolbar