学习动态性能表 第七篇--V$PROCESS

简介: 学习动态性能表 第七篇--V$PROCESS    本视图包含当前系统oracle运行的所有进程信息。常被用于将oracle或服务进程的操作系统进程ID与数据库session之间建立联系。在某些情况下非常有用: 1.         如果数据库瓶颈是系统资源(如:cpu,内存),并且占用资源最多的用户总是停留在某几个服务进程,那么进行如下诸项: l         找出资源进程 l         找出它们的session,你必须将进程与会话联系起来。
 

学习动态性能表

第七篇--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

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

 from v$session s, v$process p

 where s.osuser = 'junsansi'

   and s.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

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

 WHERE l.object_id = o.object_id

   AND l.session_id = s.sid and s.paddr = p.addr

 ORDERBY o.object_id, xidusn DESC

3.          

附注:

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

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

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

 FROM v$process p, v$session s

 WHERE p.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 连接查询到后台进程的名字:

SELECT s.SID SID, p.spid threadid, p.program processname, bg.NAMENAME

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

 WHERE p.addr = s.paddr

   AND p.addr = bg.paddr

   AND bg.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

Eygle大师写了一段sql脚本getsql.sql,用来获取指定pid正在执行的sql语句,在此也附注上来。

REM getsql.sql

REM author eygle

REM windows,已知进程ID,得到当前正在执行的语句

REM windows,进程ID16进制,需要转换,UNIX直接为10进制

SELECT   /*+ ORDERED */

         sql_text

    FROM v$sqltext a

   WHERE (a.hash_value, a.address) IN (

            SELECT DECODE (sql_hash_value,

                           0, prev_hash_value,

                           sql_hash_value

                          ),

                   DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)

              FROM v$session b

             WHERE b.paddr = (SELECT addr

                                FROM v$process c

                               WHERE c.spid = TO_NUMBER ('&pid', 'xxxx')))

ORDER BY piece ASC

/

目录
相关文章
|
缓存 监控 NoSQL
Quick-Task 动态脚本支持框架之结构设计篇
前面两篇博文,主要是整体介绍和如何使用;接下来开始进入正题,逐步剖析,这个项目是怎么一步一步搭建起来的;本篇博文则主要介绍基本骨架的设计,围绕项目的核心点,实现一个基础的原型系统
243 0
Quick-Task 动态脚本支持框架之结构设计篇
|
SQL Oracle 关系型数据库
一次有意思的错选执行计划问题定位(涉及SYS_OP_C2)
这两天和广分的兄弟看了一个问题,比较有意思,过程也比较曲折。。。 问题现象: 1. 11g的库,话说有一个应用程序新上线,应用中使用了绑定变量的方式执行一条简单的SQL,例如select a from b where c = :x,c列是该表复合主键的前导列,表定义是varchar2类型,从spotlight监控看这条SQL的执行计划是全表扫描,一次执行要1个小时,这张表是运行很久的引用分区表,数据量是亿级,测试的时候正常,但很显然测试的数据量可能和生产非常不一致,导致没察觉。
1148 0
|
关系型数据库
SYS_预设值文件Profiler的设定简介(概念)
2012-01-04 Created By BaoXinjian 一、基本概念 1. Profile的层次:         Site->Application->Organization->Responsibility->User 2、自定义Profiler总结     (1).
578 0
|
SQL 数据库 开发工具
数据同步框架MS Sync Framework [术语、例子、参考资料、Tips]
在现在的应用中,一些临时脱机(Offline)应用,需要和主数据库进行定期的数据同步,采用MS Sync Framework可以快速的实现一个解决方案,而且这个框架本身有很大的扩展性,可以用于数据库(ADO.net兼容的)、文件,Web Feed等同步。
1181 0
|
SQL 数据库 关系型数据库
学习动态性能表 第五篇--V$SESSION
学习动态性能表 第五篇--V$SESSION    在本视图中,每一个连接到数据库实例中的session都拥有一条记录。包括用户session及后台进程如DBWR,LGWR,arcchiver等等。
877 0
|
SQL 移动开发 关系型数据库
学习动态性能表 第十篇--V$SESSION_LONGOPS
学习动态性能表 第十篇--V$SESSION_LONGOPS  本视图显示运行超过6秒的操作的状态。包括备份,恢复,统计信息收集,查询等等。 要监控查询执行进展状况,你必须使用cost-based优化方式,并且: l         设置TIMED_STATISTICS或SQL_TRACE参数值为true。
996 0
|
存储 数据库 iOS开发
学习动态性能表 第二篇--v$sesstat
学习动态性能表 第二篇--v$sesstat    按照OracleOnlineBook中的描述,v$sesstat存储session从login到logout的详细资源使用统计。   类似于v$sysstat,该视图存储下列类别的统计: l         事件发生次数的统计,如用户提交数。
938 0
|
SQL Oracle 关系型数据库
学习动态性能表 第六篇-(1)-V$SESSION_WAIT
学习动态性能表 第六篇-(1)-V$SESSION_WAIT    这是一个寻找性能瓶颈的关键视图。它提供了任何情况下session在数据库中当前正在等待什么(如果session当前什么也没在做,则显示它最后的等待事件)。
895 0
|
数据库 缓存 关系型数据库
学习动态性能表 第九篇--V$FILESTAT
学习动态性能表 第九篇--V$FILESTAT    本视图记录各文件物理I/O信息。如果瓶颈与I/O相关,可用于分析发生的活动I/O事件。V$FILESTAT显示出数据库I/O的下列信息(不包括日志文件): l         物理读写数 l         块读写数 l         I/O读写总耗时   以上数值自实例启动即开始记录。
686 0