学习动态性能表

第七篇--V$PROCESS  2007.5.30

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

  1. 如果数据库瓶颈是系统资源(如:cpu,内存),并且占用资源最多的用户总是停留在某几个服务进程,那么进行如下诸项:
  • 找出资源进程
  • 找出它们的session,你必须将进程与会话联系起来。
  • 找出为什么session占用了如此多的资源
  1. SQL跟踪文件名是基于服务进程的操作系统进程ID。要找出session的跟踪文件,你必须将session与服务进程联系起来。
  2. 某些事件,如rdbms ipc reply,鉴别session进程的Oracle进程ID在等什么。要发现这些进程在做什么,你必须找出它们的session。
  3. 你所看到的服务器上的后台进程(DBWR,LGWR,PMON等)都是服务进程。要想知道他们在做什么,你必须找到他们的session。

V$PROCESS中的常用列

  • ADDR:进程对象地址
  • PID:oracle进程ID
  • 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

  1. 查看锁和等待

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

ORDER BY o.object_id, xidusn DESC

附注:

  在linux环境可以通过ps查看进程信息包括pid,windows中任务管理器的PID与v$process中pid不能一一对应,这块在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.NAME NAME

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上,进程ID为16进制,需要转换,在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

学习动态性能表(7)--v$process的更多相关文章

  1. 学习动态性能表(5)--v$session

    学习动态性能表 第五篇--V$SESSION  2007.5.29 在本视图中,每一个连接到数据库实例中的session都拥有一条记录.包括用户session及后台进程如DBWR,LGWR,arcch ...

  2. 学习动态性能表(8)--v$lock&v$locked_object

    学习动态性能表 第八篇-(1)-V$LOCK  2007.5.31 这个视图列出Oracle 服务器当前拥有的锁以及未完成的锁或栓锁请求.如果你觉着session在等待等待事件队列那你应该检查本视图. ...

  3. 学习动态性能表 v$sql

    学习动态性能表 第三篇-(1)-v$sql V$SQL中存储具体的SQL语句. 一条语句可以映射多个cursor,因为对象所指的cursor可以有不同用户(如例1).如果有多个cursor(子游标)存 ...

  4. 学习动态性能表(4)--v$sqltext&v$sqlarea

    学习动态性能表 第四篇-(1)-V$SQLTEXT  2007.5.29 本视图包括Shared pool中SQL语句的完整文本,一条SQL语句可能分成多个块被保存于多个记录内. 注:V$SQLARE ...

  5. 学习动态性能表(3)--v$sql&v$sql_plan

    学习动态性能表 第三篇-(1)-v$sq 2007.5.25 V$SQL中存储具体的SQL语句. 一条语句可以映射多个cursor,因为对象所指的cursor可以有不同用户(如例1).如果有多个cur ...

  6. 学习动态性能表(2)--v$sesstat

    学习动态性能表 第二篇--v$sesstat  2007.5.25 按照OracleOnlineBook中的描述,v$sesstat存储session从login到logout的详细资源使用统计. 类 ...

  7. 学习动态性能表(22)V$resource_limit

    学习动态性能表 第20篇--V$resource_limit  2007.6.15 就一条SQL语句供你参考: select * from V$RESOURCE_LIMIT where resourc ...

  8. 学习动态性能表(21)v$lincense

    学习动态性能表 第20篇--v$lincense  2007.6.15 本节主要参数: SESSION_MAX:实例允许的并发最大session数量 SESSION_WARNING:当前实例警告的并发 ...

  9. 学习动态性能表(20)--v$waitstat

    学习动态性能表 第20篇--V$WAITSTAT  2007.6.15 本视图保持自实例启动所有的等待事件统计信息.常用于当你发现系统存在大量的"buffer busy waits" ...

随机推荐

  1. 一些逼格略高的 js 片段

    // 一个接一个运行 // timeout 不能直接放在 for 里面,暂时不知道为什么 function functionOneByOne(fn, times, duration) { for(va ...

  2. 生产&消费者模型

    import queue,threading,time ,random q = queue.Queue() def producer(): count = 1 while count <11: ...

  3. DNS 缓存机制原理

    DNS 缓存机制原理 简单来说,一条域名的DNS记录会在本地有两种缓存:浏览器缓存和操作系统(OS)缓存.在浏览器中访问的时候,会优先访问浏览器缓存, 如果未命中则访问OS缓存,最后再访问DNS服务器 ...

  4. INSPIRED启示录 读书笔记 - 第13章 产品原则

    确定什么最重要 产品原则是对团队信仰和价值观的总结,用来指导产品团队作出正确的决策和取舍.它体现了产品团队的目标和愿景,是产品战略的重要组成部分.从形式上看,它是一系列明确的.体现团队特色的产品价值准 ...

  5. Linux mysql主从同步配置

    一.在两台Ubuntu机器上安装mysql1.检查系统中是否安装了mysql 这个是已经安装了的 没有安装的话执行上条命令===============================MySQL的一些 ...

  6. WebUploader API文档

    Web Uploader内部类的详细说明,以下提及的功能类,都可以在WebUploader这个变量中访问到. As you know, Web Uploader的每个文件都是用过AMD规范中的defi ...

  7. 偏远小渔村选手的noip2017游记

    这次noip估计是我初中最后一次比赛了,毕竟初三狗还要准备中考,要是中考挂了就GG了. 在最终成绩的榜上,我看到我成绩400,非常意外(你们这群大佬赛前天天奶我,还好不是毒奶),更意外的是全省竟然只有 ...

  8. navigationBar

    1.navigationBar导航条可以看做是self.navigationController导航控制器的一个属性. 通过self.navigationController.navigationBa ...

  9. sqlserver的疑难杂症解析

    1.电脑修改ip后ssms通过ip访问失败 通过计算机名可以访问成功,但通过修改后的ip访问却失败了! 解决方法:打开Sql Server Configuration Manager -> SQ ...

  10. 用简单的反射优化代码(动态web项目)

    在动态web项目中,没有使用框架时,只是简单的jsp访问servlet实现增删改查, 无论是哪个方法都需要经过Servlet中的doGet()方法或doPost()方法,我们可以在链接中附带参数进行区 ...