`
hougbin
  • 浏览: 492564 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

oracle 常用视图之-----v$process

阅读更多

v$process 视图

   作用: v$process视图包含当前系统oracle运行的所有进程信息。常被用于将oracle或服务进程的操作系统进程ID与数据库session之间建立联系。

    表结构

  SQL> desc v$process;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------

 ADDR                                               RAW(4)
 PID                                                NUMBER
 SPID                                               VARCHAR2(12)
 USERNAME                                           VARCHAR2(15)
 SERIAL#                                            NUMBER
 TERMINAL                                           VARCHAR2(16)
 PROGRAM                                            VARCHAR2(64)
 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

 

如果数据库瓶颈是系统资源(如: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;

还可以通过和 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';

 

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
/

分享到:
评论
1 楼 di1984HIT 2013-12-09  
写的很好啊。

相关推荐

    Oracle10g DBA经常使用的动态性能视图和数据字典

    v$process:当前进程的信息 v$rollname:回滚段信息 v$rollstat:联机回滚段统计信息 v$rowcache:内存中数据字典活动/性能信息 v$session:有关会话的信息 v$sesstat:在v$session中报告当前会话的统计信息 v$...

    Oracle 常用系统表

    v$process:处理器的信息; v$session:会话信息; v$transaction:事务信息; v$resource:资源信息; v$sga:系统全局区的信息。 上面的视图名中的‘v$’,只是视图名字中的字符。类似于上面的视图或表还有很多,...

    最全的oracle常用命令大全.txt

    SQL&gt; select pro.spid from v$session ses,v$process pro where ses.sid=21 and ses.paddr=pro.addr; 说明:21是某个连接的sid数 然后用 kill 命令杀此进程号。 五、SQL*PLUS使用 a、近入SQL*Plus $sqlplus ...

    orcale常用命令

    SQL&gt; select pro.spid from v$session ses,v$process pro where ses.sid=21 and ses.paddr=pro.addr; 说明:21是某个连接的sid数 然后用 kill 命令杀此进程号。 五、SQL*PLUS使用 a、近入SQL*Plus $sqlplus ...

    Oracle Concepts 中文英文对照版 (10g R2)

    Chapter 9, Process Architecture 第 9 章,进程体系结构 Chapter 10, Application Architecture 第 10 章,应用体系结构 Chapter 11, Oracle Utilities 第 11 章,Oracle 工具 Chapter 12, ...

    Oracle 10g Concepts 中文版

    oracle官方的学习资料,中英文对照 目录如下: 第一部分 何为 Oracle? Chapter 1, Introduction to the Oracle Database 第 1 章,Oracle 数据库简介 Part II Oracle Database Architecture 第二部分 Oracle ...

    Oracle Concepts中英文对照版(10g R2).chm

    Chapter 9, Process Architecture 第 9 章,进程体系结构 Chapter 10, Application Architecture 第 10 章,应用体系结构 Chapter 11, Oracle Utilities 第 11 章,Oracle 工具 Chapter 12, ...

    Oracle 10g r2 Concepts 手册(中英文对照阅读版本).chm

    Oracle 10g r2 Concepts 手册是一个很好的学习 Oracle 的起点,涉及到了你所需要知道的许多重要 Oracle 概念。当然,其中不可能会涵盖每一个技术细节(Oracle 文档提供了技术细节,不过它有 10000 ~ 20000 页),...

    oracle concepts概念手册中英文版(10gR2)

    第一部分 何为 Oracle? Chapter 1, Introduction to the Oracle Database 第 1 章,Oracle 数据库简介 Part II Oracle Database Architecture 第二部分 Oracle 数据库体系结构 Chapter 2, Data Blocks, Extents,...

    oracle概念手册中英文对照版

    Part I What Is Oracle? 第一部分 何为 Oracle? Chapter 1, Introduction to the Oracle Database 第 1 章,Oracle 数据库简介 Part II Oracle Database Architecture 第二部分 Oracle 数据库体系结构 Chapter 2, ...

    Oracle Concepts 中文版 (10g R2)

    Oracle Concepts官方文档,中英文对照版,oracle数据库入门的好材料,不论是从事ORACLE数据库管理还是ORACLE应用开发,都应该读一读。 Part I What Is Oracle? 第一部分 何为 Oracle? Chapter 1, Introduction ...

    Oracle Concepts 中英文对照版 (10g R2).rar

    Part I What Is Oracle? 第一部分 何为 Oracle? Chapter 1, Introduction to the Oracle Database 第 1 章,Oracle 数据库简介 Part II Oracle Database Architecture 第二部分 Oracle 数据库体系结构 Chapter ...

    关于Oracle Dataguard 日志传输状态监控问题

    ORACLE DATAGUARD的主备库同步,主要是依靠日志传输到备库,备库应用日志或归档来实现。当主、备库间日志传输出现GAP,备库将不再与主库同步。...SELECT PROCESS, SEQUENCE#, STATUS, DELAY_MINS FROM V$MANAG

    经典SQL语句大全

    9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2...

    数据库操作语句大全(sql)

    9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2...

    sql经典语句一部分

    9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2...

    asp.net知识库

    正式发布表达式计算引擎WfcExp V0.9(附源码) 运算表达式类的原理及其实现 #实现的18位身份证格式验证算法 身份证15To18 的算法(C#) 一组 正则表达式 静态构造函数 忽略大小写Replace效率瓶颈IndexOf 随机排列算法 ...

    测试培训教材

    QC支持的数据库:Oracle、SQLServer QC支持的操作系统:Windows、Linux、Solaris 支持群集: 服务器端硬件和数据库要求: Windows: Linux: Solaris: 客户端系统要求: 练习1:安装QC 详见...

    Toad 使用快速入门

     把鼠标定位到表/视图/存储过程名称之上,按F4,可以打开对象描述窗口,方便的查看表和视图的定义,存储过程的源代码,  非常容易对SQL语句的分析其执行计划:单击工具栏上的 按钮就可以看到Explain Plan的...

    Maven权威指南 很精典的学习教程,比ANT更好用

    Process Test Resources 10.3.4. Test Compile 10.3.5. Test 10.3.6. Install 10.3.7. Deploy 11. 构建Profile 11.1. Profile是用来做什么的? 11.1.1. 什么是构建可移植性 11.1.1.1. 不可移植构建 ...

Global site tag (gtag.js) - Google Analytics