`

学习动态性能表(七)--V$PROCESS

阅读更多

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

1.如果数据库瓶颈是系统资源(如:cpu,内存),并且占用资源最多的用户总是停留在某几个服务进程,那么进行如下诸项:

1>.找出资源进程
2>.找出它们的session,你必须将进程与会话联系起来。
3>.找出为什么session占用了如此多的资源

2.SQL跟踪文件名是基于服务进程的操作系统进程ID。要找出session的跟踪文件,你必须将session与服务进程联系起来。
3.某些事件,如rdbms ipc reply,鉴别session进程的Oracle进程ID在等什么。要发现这些进程在做什么,你必须找出它们的session。
4.你所看到的服务器上的后台进程(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

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
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 JSSjunsansi PlSqlDev.exe
9 13 3420 JSSjunsansi PlSqlDev.exe
13 14 660 JSSjunsansi 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
/

分享到:
评论

相关推荐

    学些动态性能表-word版

    学习动态性能表(七)--v$process 学习动态性能表(八)--v$lock&v$locked_object 学习动态性能表(九)--v$filestat 学习动态性能表(十)--v$session_longops 学习动态性能表(11)--v$latch$v$latch_children 学习动态...

    ORACLE動態性能表

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

    学习Oracle动态性能表

    通过对这些动态性能表的深入学习,数据库管理员能够更好地监控Oracle数据库的运行状态,及时发现并解决问题,提升整体系统的性能和稳定性。在实际工作中,结合性能监控工具和SQL优化工具,这些视图的数据将发挥巨大...

    Oracle 动态性能表

    通过深入学习和理解这些动态性能表,我们可以更好地管理Oracle数据库,提升其性能,确保系统的稳定性和高效性。在实际工作中,结合SQL Trace、AWR(自动工作负载 Repository)和ASH(Active Session History)等工具...

    oracle动态性能试图表学习

    在"Oracle动态性能视图表学习"这个主题中,我们将深入探讨以下几个关键知识点: 1. **动态性能视图的概念**:动态性能视图由一系列预定义的SQL查询组成,它们直接从数据库的内存结构中获取数据,因此能够反映当前...

    gpml-matlab-v4.2-2018-06-11.zip

    高斯过程回归(Gaussian Process Regression,GPR)是一种非参数机器学习方法,它基于概率模型,能够处理回归问题并提供预测的不确定性估计。在给定的标题"gpml-matlab-v4.2-2018-06-11.zip"中,我们看到这是一个...

    oracle性能监控常用语句集合

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

    spss_process最新版v4.1.rar

    总结,SPSS Process v4.1作为一款强大的统计分析工具,不仅提供了丰富的统计模型,还在易用性和性能上做了进一步提升。无论是研究人员还是数据分析从业者,都能从中受益,更高效地理解和解释数据背后的复杂关系。...

    ORACLE 动态性能视图

    学习和掌握这些动态性能视图的使用,需要结合实际的数据库环境和性能问题进行实践。通过查询和分析这些视图,可以获取到宝贵的诊断信息,进而采取相应的优化措施,提高数据库的运行效率和响应速度。 总的来说,...

    cmmi-dev-v1.2 中英文

    **CMMI v1.2中文版** 和 **CMMI v1.2英文版** 提供了双语对照阅读的机会,对于学习者来说尤其有价值。中文版可以帮助中国读者更好地理解模型的内容,而英文版则有助于提高专业英语水平,同时确保理解和应用与国际...

    SQL_最实用的学习资料没有之一

    SQL&gt; SELECT U_DUMP.VALUE || '/' || INSTANCE.VALUE || '_ORA_' || V$PROCESS.SPID || NVL2(V$PROCESS.TRACEID, '_' || V$PROCESS.TRACEID, NULL) || '.TRC' "TRACEFILE" FROM V$PARAMETER U_DUMP CROSS JOIN V$...

    TrustPayClient-Java-V3.1.1.rar_3.11_DEMO_TrustPay_TrustPayCBPCli

    《农行Java开发接口包:TrustPayClient-Java-V3.1.1详解》 在IT行业中,银行与支付系统的接口开发是至关重要的一个环节,它关乎着金融交易的安全与效率。本文将深入探讨“TrustPayClient-Java-V3.1.1”这一农行Java...

    oracle数据字典关系图

    - 关键字段:`Pid`, `Addr` (V$PROCESS), `Paddr` (V$BGPROCESS) - 功能:列出系统中的所有后台进程。 16. **V$LATCHNAME 和 V$CIRCUIT** - 描述:闩锁名称和电路信息。 - 关键字段:`Latch#` (V$LATCHNAME), `...

    orace性能优化高级培训.rar

    - **V$视图**:提供数据库内部状态信息,如V$SESSION、V$PROCESS、V$SQL等。 - **企业管理器(EM)**:图形化界面,用于监控和诊断数据库性能。 - **AWR(Automatic Workload Repository)**:自动收集性能数据,...

    Process Monitor源代码

    在实际应用中,Process Monitor这样的工具对于系统管理员来说非常有用,他们可以使用它来诊断系统性能问题,查找恶意软件活动,或者在调试应用程序时理解其行为。对于开发者而言,它可以作为学习操作系统原理和C++...

    修改oracle process session 初始化参数

    接下来,我们学习如何调整`process`的数量。`processes`参数定义了Oracle实例可以创建的最大并发进程数。更改此参数需要重启数据库。 1. **修改并保存设置** - 修改`processes`参数的值,并将其写入服务器参数文件...

    gpml-matlab-v4.2.rar

    高斯过程回归(Gaussian Process Regression,GPR)是一种非参数机器学习方法,它利用概率模型来估计数据的不确定性,并能提供预测的置信区间。在MATLAB环境中,`gpml-matlab-v4.2`是一个强大的工具箱,专为实现高斯...

    Process Monitor v2.93

    "Process Monitor v2.93" 是一个由微软开发并归类在Windows Sysinternals工具集中的强大系统监控工具,主要用于实时监测系统级别的事件。这个2010年的版本适用于多个Windows操作系统,包括Windows 2000、XP、2003、...

    进程监视工具Process Explorer v10.20 绿色版.rar

    Process Explorer 是一款极其实用的系统诊断和故障排除工具,尤其对于系统管理员和高级用户,它提供了更多控制和洞察力,帮助他们优化系统性能,解决问题。尽管它可能对初学者来说有些复杂,但通过学习和实践,用户...

    data guard日常维护(10年经验总结)

    - 查看RFS(Remote File Service)接收日志的情况和MRP(Managed Recovery Process)应用日志的进度,通过`V$MANAGED_STANDBY`视图。 - 通过`V$ARCHIVE_DEST_STATUS`视图确认备库是否与主库同步,检查归档日志的...

Global site tag (gtag.js) - Google Analytics