学习动态性能表(7)--v$process
学习动态性能表
第七篇--V$PROCESS 2007.5.30
本视图包含当前系统oracle运行的所有进程信息。常被用于将oracle或服务进程的操作系统进程ID与数据库session之间建立联系。在某些情况下非常有用:
- 如果数据库瓶颈是系统资源(如:cpu,内存),并且占用资源最多的用户总是停留在某几个服务进程,那么进行如下诸项:
- 找出资源进程
- 找出它们的session,你必须将进程与会话联系起来。
- 找出为什么session占用了如此多的资源
- SQL跟踪文件名是基于服务进程的操作系统进程ID。要找出session的跟踪文件,你必须将session与服务进程联系起来。
- 某些事件,如rdbms ipc reply,鉴别session进程的Oracle进程ID在等什么。要发现这些进程在做什么,你必须找出它们的session。
- 你所看到的服务器上的后台进程(DBWR,LGWR,PMON等)都是服务进程。要想知道他们在做什么,你必须找到他们的session。
V$PROCESS中的常用列
- ADDR:进程对象地址
- PID:oracle进程ID
- SPID:操作系统进程ID
V$PROCESS中的连接列
Column View Joined Column(s)
ADDR V$SESSION PADDR
示例:
- 查找指定系统用户在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
- 查看锁和等待
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的更多相关文章
- 学习动态性能表(5)--v$session
学习动态性能表 第五篇--V$SESSION 2007.5.29 在本视图中,每一个连接到数据库实例中的session都拥有一条记录.包括用户session及后台进程如DBWR,LGWR,arcch ...
- 学习动态性能表(8)--v$lock&v$locked_object
学习动态性能表 第八篇-(1)-V$LOCK 2007.5.31 这个视图列出Oracle 服务器当前拥有的锁以及未完成的锁或栓锁请求.如果你觉着session在等待等待事件队列那你应该检查本视图. ...
- 学习动态性能表 v$sql
学习动态性能表 第三篇-(1)-v$sql V$SQL中存储具体的SQL语句. 一条语句可以映射多个cursor,因为对象所指的cursor可以有不同用户(如例1).如果有多个cursor(子游标)存 ...
- 学习动态性能表(4)--v$sqltext&v$sqlarea
学习动态性能表 第四篇-(1)-V$SQLTEXT 2007.5.29 本视图包括Shared pool中SQL语句的完整文本,一条SQL语句可能分成多个块被保存于多个记录内. 注:V$SQLARE ...
- 学习动态性能表(3)--v$sql&v$sql_plan
学习动态性能表 第三篇-(1)-v$sq 2007.5.25 V$SQL中存储具体的SQL语句. 一条语句可以映射多个cursor,因为对象所指的cursor可以有不同用户(如例1).如果有多个cur ...
- 学习动态性能表(2)--v$sesstat
学习动态性能表 第二篇--v$sesstat 2007.5.25 按照OracleOnlineBook中的描述,v$sesstat存储session从login到logout的详细资源使用统计. 类 ...
- 学习动态性能表(22)V$resource_limit
学习动态性能表 第20篇--V$resource_limit 2007.6.15 就一条SQL语句供你参考: select * from V$RESOURCE_LIMIT where resourc ...
- 学习动态性能表(21)v$lincense
学习动态性能表 第20篇--v$lincense 2007.6.15 本节主要参数: SESSION_MAX:实例允许的并发最大session数量 SESSION_WARNING:当前实例警告的并发 ...
- 学习动态性能表(20)--v$waitstat
学习动态性能表 第20篇--V$WAITSTAT 2007.6.15 本视图保持自实例启动所有的等待事件统计信息.常用于当你发现系统存在大量的"buffer busy waits" ...
随机推荐
- Linux安装jdk10
1.官网下载jdk10 下载方式两种,一种是wget下载,一种是windows系统下载,然后上传到linux系统上. 2.解压到/usr/local/java mkdir /usr/local/jav ...
- Linux Shell基础 环境变量
环境变量 环境变量和用户自定义变量最主要的区别在于,环境变量是全局变量,而用户自定义变量是局部变量.用户自定义变量只在当前的 Shell 中生效,而环境变量会在当前 Shell 和这个 Shell 的 ...
- windows下载Mysql-python
Mysql-python第三方模块官方不支持windows系统,而国外大学提供了非官方 的支持windows系统的模块,可前往 https://www.lfd.uci.edu/~gohlke/pyth ...
- 一些逼格略高的 js 片段
// 一个接一个运行 // timeout 不能直接放在 for 里面,暂时不知道为什么 function functionOneByOne(fn, times, duration) { for(va ...
- linux 挂载 smb
smbmount //192.168.1.210/homes/dm8168 /opt/fedora/ -o username=psubo,password=psubo_smb
- LVS 介绍
LVS 介绍 说明: LVS是Linux Virtual Server的简称 LVS是一个实现负载均衡的开源软件项目 LVS效率要高于Nginx LVS工作在ISO的第4层(传输层) LVS架构有三层 ...
- 封装一个既能遍历数组又能遍历对象的的forEach函数
function newforEach(obj,fn) { var key; if(obj instanceof Array){ obj.forEach(function(item,index){ f ...
- 第四篇、linux系统文件属性三
一.linux文件属性之文件权限体系介绍 二.linux中连接介绍 三.软连接 四.图解 五文件删除原理 主要内容
- Go 书单
一.<Go语言学习笔记> (未找到对应版本的电子书,大家可以去作者github:https://github.com/qyuhen/book) 推荐理由:作为时下流行的一种系统编程语言,G ...
- Eclipse与Tomcat的集成(无插件)
1.下载Eclipse(https://www.eclipse.org/downloads/)和Tomcat(http://tomcat.apache.org/),具体的安装略: 2.打开Eclips ...