学习动态能表(七)--v$process.doc_第1页
学习动态能表(七)--v$process.doc_第2页
学习动态能表(七)--v$process.doc_第3页
学习动态能表(七)--v$process.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习动态性能表第七篇-V$PROCESS 2007.5.30本视图包含当前系统oracle运行的所有进程信息。常被用于将oracle或服务进程的操作系统进程ID与数据库session之间建立联系。在某些情况下非常有用:1. 如果数据库瓶颈是系统资源(如:cpu,内存),并且占用资源最多的用户总是停留在某几个服务进程,那么进行如下诸项:l 找出资源进程l 找出它们的session,你必须将进程与会话联系起来。l 找出为什么session占用了如此多的资源2. SQL跟踪文件名是基于服务进程的操作系统进程ID。要找出session的跟踪文件,你必须将session与服务进程联系起来。3. 某些事件,如rdbms ipc reply,鉴别session进程的Oracle进程ID在等什么。要发现这些进程在做什么,你必须找出它们的session。4. 你所看到的服务器上的后台进程(DBWR,LGWR,PMON等)都是服务进程。要想知道他们在做什么,你必须找到他们的session。V$PROCESS中的常用列l ADDR:进程对象地址l PID:oracle进程IDl SPID:操作系统进程IDV$PROCESS中的连接列ColumnViewJoined Column(s) ADDRV$SESSIONPADDR示例:1. 查找指定系统用户在oracle中的session信息及进程id,假设操作系统用户为:junsansiselect s.sid,s.SERIAL#, s.username,p.spid from v$session s, v$process p where s.osuser = junsansi and s.PADDR = p.ADDR2. 查看锁和等待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 DESC3.附注:在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, gram FROM v$process p, v$session s WHERE p.addr = s.paddr;SIDPIDSIGNALEDOSUSERPROGRAM122452SYSTEMORACLE.EXE232460SYSTEMORACLE.EXE342472SYSTEMORACLE.EXE452492SYSTEMORACLE.EXE562496SYSTEMORACLE.EXE672508SYSTEMORACLE.EXE782520SYSTEMORACLE.EXE892524SYSTEMORACLE.EXE10121316JSSjunsansiPlSqlDev.exe9133420JSSjunsansiPlSqlDev.exe1314660JSSjunsansiPlSqlDev.exe还可以通过和 v$bgprocess 连接查询到后台进程的名字: SELECT s.SID SID, p.spid threadid, gram 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;SIDTHREADIDPROCESSNAMENAME12452ORACLE.EXEPMON22460ORACLE.EXEDBW032472ORACLE.EXELGWR42492ORACLE.EXECKPT52496ORACLE.EXESMON62508ORACLE.EXERECO72520ORACLE.EXECJQ082524ORACLE.EXEQMN0Eygle大师写了一段sql脚本getsql.sql,用来获取指定pid正在执行的sql语句,在此也附注上来。REM getsql.sqlREM author eygleREM 在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_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论