`
hougbin
  • 浏览: 502495 次
  • 性别: 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  
写的很好啊。

相关推荐

    Oracle v$sqlarea, v$sql, v$sqltext视图说明

    简单描述Oracle v$sqlarea, v$sql, v$sqltext视图说明

    oracle 动态性能(V$)视图

    Oracle数据库中的动态性能(V$)视图是数据库管理员和开发人员获取实时数据库状态信息的重要工具。这些视图提供了丰富的信息,涵盖了从SQL执行情况、系统资源使用到数据库等待事件等各个方面,极大地帮助了性能调优...

    oracle 常用表和视图

    Oracle数据库是世界上最广泛使用的数据库管理系统之一,其丰富的系统表和视图为DBA(数据库管理员)提供了管理和监控数据库的强大工具。这些表和视图主要分为三类:以`dba_`开头、`user_`开头以及`v$`开头。下面我们...

    常用的oracle表和视图

    ### 常用的Oracle表和视图知识点详解 #### 一、查询某个表在哪些存储过程中被使用 为了高效地了解某个特定表在哪些存储过程中被引用,可以通过以下SQL查询来实现: ```sql SELECT A.NAME AS 过程名称, MIN(A.LINE...

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

    本文将详细介绍Oracle10g DBA常用的几个数据字典视图和动态性能视图,帮助读者更好地理解和利用这些资源。 #### 一、DBA最常用的数据字典 数据字典是存储在SYSTEM表空间中的一系列特殊表,它们提供了关于数据库...

    oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm

    对于“监控”这个标签,安装完Oracle Instant Client后,可以使用它来连接到数据库并执行性能监视查询,如`v$session_wait`、`v$process`和`v$sysstat`视图,以了解数据库的运行状况。还可以集成其他监控工具,如...

    常用oracle动态性能视图

    V$SESSION 视图是 Oracle 提供的核心性能监视视图之一,它记录了所有与数据库实例建立连接的会话(session)信息,包括用户会话和后台进程,如 DBWR(数据库写进程)、LGWR(日志写进程)和归档进程等。通过 V$...

    oracle_v$session_v$session_wait用途详解

    Oracle 数据库提供了大量的动态性能视图(Dynamic Performance Views),其中 `V$SESSION` 和 `V$SESSION_WAIT` 是两个非常重要的视图,它们能够帮助数据库管理员深入了解当前会话的状态以及等待事件的信息。...

    oracle内置常用表和视图及其日志管理.docx

    本篇将详细介绍Oracle内置的常用表和视图,以及日志管理的相关知识。 首先,我们关注三个核心的表视图:DBA_TABLES、ALL_TABLES 和 USER_TABLES。它们分别提供了不同范围的表信息查询: 1. DBA_TABLES:这是数据库...

    Oracle课件---个人感觉不错,是我们老师做的

    Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,由美国甲骨文公司(Oracle Corporation)开发和维护。本课件“Oracle课件---个人感觉不错,是我们老师做的”旨在帮助学习者深入理解和掌握Oracle...

    oracle笔记二--plsql 编程.txt

    这里`v$sql_plan`视图包含了SQL语句的执行计划信息,而`v$session`视图则提供了当前活动会话的信息。`hash_value`用于标识特定的SQL语句。 - **ID与Parent ID**:ID列显示了计划中的步骤顺序,而Parent ID列则指出...

    Oracle-Perf-check-sql.rar_oracle

    1. **性能视图**:Oracle数据库提供了多种内置的性能视图,如V$SESSION、V$SQL、V$SESSION_WAIT、V$INSTANCE、V$SYSTEM_EVENT、V$PROCESS等,这些视图记录了关于数据库运行时的状态和历史信息。通过查询这些视图,...

    Oracle运维最佳实践-下.pdf 带书签

    - B-Tree索引是Oracle中最常用的索引类型之一。 - 本书提供了一个脚本来展示B-Tree索引的内部结构。 - 实例: - 使用自定义脚本`show_btree_index_structure.sql`来可视化B-Tree索引。 - 使用`DBMS_IND`包来...

    oracle最重要的9个动态性能视图

    `v$process` 视图列出了所有与Oracle进程相关的详细信息,包括操作系统进程ID、会话ID等。这对于理解特定会话所对应的OS进程非常有用,特别是在需要跟踪某个会话的底层活动时。 ### 3. v$sql 和 v$sqltext `v$sql`...

    ORACLE 动态性能视图

    这些视图通常以`V$`前缀命名,如`V$SESSION`、`V$PROCESS`等,其中`V$`是公共同义词,而实际的视图名称则带有`V_$`前缀。动态性能视图的更新频率非常高,随着数据库的运行而持续变化,因此得名“动态”。 这些视图...

    Oracle expert one-on-one

    Oracle数据库还涉及其他重要概念,如并发控制(通过事务和锁机制实现)、备份与恢复策略(如RMAN工具和闪回技术)、性能监控(如使用V$视图和AWR报告)以及安全性管理(用户权限、角色和审计)。这些都构成了Oracle...

    Oracle数据库管理员经常使用的表和视图

    以下是对给定文件中列出的一些常用表和视图的详细解释: #### DBA相关视图 - **DBA_USERS**:存储了数据库中所有用户的详细信息,包括用户名、默认表空间、临时表空间等。 - **DBA_SEGMENTS**:提供了关于所有数据...

    ORACLE動態性能表

    Oracle动态性能表,通常被称为V$视图,是Oracle数据库管理系统中的一个重要组成部分,它提供了对数据库运行时状态的实时信息。这些视图包含了丰富的数据库性能数据,对于DBA(数据库管理员)进行性能监控、问题诊断...

    oracle性能监控常用语句集合

    Oracle提供了大量的动态性能视图(V$视图),通过查询它们可以获取数据库运行时的详细信息。例如,`V$SESSION`用于查看当前会话状态,`V$INSTANCE`显示实例信息,`V$SESSION_WAIT`揭示会话等待事件,而`V$SQL`和`V$...

    oracle常用系统表.

    ### Oracle常用系统表知识点详解 Oracle数据库作为一款广泛使用的数据库管理系统,在日常的数据库管理与维护过程中,系统表扮演着至关重要的角色。系统表是Oracle数据库自带的、用于存储数据库元数据(即关于数据的...

Global site tag (gtag.js) - Google Analytics