查看并行进程的一些简单信息(r3笔记第17天)

在使用并行的时候,总能看到进程中出现一些ora_p这样的进程。有时候查看问题的时候只看到并行进程在运行,却没有思路去查找倒底是哪些session在干些什么,下面简单分析一下。怎么去映射系统级的进程和数据库级的并行进程。 从系统进程中可以看到一些并行session在运行。 SQL> !ps -ef|grep ora_p|grep TESTDB testdbuser 17422 1 0 Aug29 ? 00:04:56 ora_pmon_TESTDB testdbuser 17425 1 0 Aug29 ? 00:01:12 ora_psp0_TESTDB testdbuser 20847 26200 0 20:54 pts/1 00:00:00 /bin/bash -c ps -ef|grep ora_p|grep TESTDB testdbuser 32541 1 2 10:09 ? 00:18:23 ora_p000_TESTDB testdbuser 32543 1 2 10:09 ? 00:17:41 ora_p001_TESTDB testdbuser 32545 1 2 10:09 ? 00:18:51 ora_p002_TESTDB testdbuser 32547 1 2 10:09 ? 00:15:55 ora_p003_TESTDB testdbuser 32549 1 3 10:09 ? 00:19:22 ora_p004_TESTDB testdbuser 32551 1 3 10:09 ? 00:24:52 ora_p005_TESTDB testdbuser 32553 1 3 10:09 ? 00:21:43 ora_p006_TESTDB testdbuser 32561 1 3 10:09 ? 00:24:52 ora_p007_TESTDB testdbuser 32563 1 1 10:09 ? 00:08:30 ora_p008_TESTDB testdbuser 32565 1 1 10:09 ? 00:07:20 ora_p009_TESTDB 如果查看v$session,会发现program中有一些session是和并行相关的session。 SQL> select sid,username,program from v$session where sid in (select sid from v$px_session ) and username='TESTDB'; SID USERNAME PROGRAM ---------- ------------------------------ ------------------------------------------------ 2738 testdb oracle@dbserver (P000) 666 testdb oracle@dbserver (P001) 1371 testdb oracle@dbserver (P002) 1590 testdb oracle@dbserver (P003) 2183 testdb oracle@dbserver (P004) 2671 testdb oracle@dbserver (P005) 3125 testdb oracle@dbserver (P006) 4084 testdb oracle@dbserver (P007) 3053 testdb sqlplus@dbserver (TNS V1-V3) 9 rows selected. 在并行中3053 是相当于这个并行处理的代言人,协调者,其他的session都是在后台默默的工作着。各个并行进程对处理完的数据进行最后的合并都是由3053这个进程来最后完成,展现给用户。 有时候定义了并行度,想对并行的情况进行一个简单的监控,至少可以知道目前系统是否还有足够的资源。并行资源的使用情况等。 可以参考v$px_session, v$px_process,v$session,v$process,v$px_sesstat,v$pq_sesstat来完成。 简单举个例子来分析一下。 如果目前我运行一个脚本,设定的并行度为8,查看一下运行的并行度情况 select pxsess.sid,sess.username,pxsess.serial#,pxsess.qcsid,pxsess.qcserial#,pxsess.degree,pxsess.server#,pxsess.req_degree from v$px_session pxsess,v$session sess where pxsess.sid=sess.sid and sess.username='TESTDB'; 这个例子显示了并行相关的session,列acsid就是对应的协调session,可以看到显示的都是6620.,可以通过字段degree,req_degree看到申请了8个进程,然后也得到了8个进程。server_set中可以看到 SID USERNAME SERIAL# QCSID QCSERIAL# DEGREE SERVER_SET REQ_DEGREE ---------- ------------------------------ ---------- ---------- ---------- ---------- ---------- ---------- 4539 testdb 7255 6620 49463 8 1 8 4921 testdb 2967 6620 49463 8 2 8 5295 testdb 31077 6620 49463 8 3 8 5487 testdb 29109 6620 49463 8 4 8 5671 testdb 48021 6620 49463 8 5 8 5863 testdb 10191 6620 49463 8 6 8 6051 testdb 9337 6620 49463 8 7 8 6238 testdb 2979 6620 49463 8 8 8 6620 testdb 49463 6620 得到了基本的信息来看看对应的进程信息。 SQL> !ps -ef|grep ora_p|grep TESTDB testdb 17422 1 0 Aug29 ? 00:04:56 ora_pmon_TESTDB testdb 17425 1 0 Aug29 ? 00:01:12 ora_psp0_TESTDB testdb 20847 26200 0 20:54 pts/1 00:00:00 /bin/bash -c ps -ef|grep ora_p|grep TESTDB testdb 32541 1 2 10:09 ? 00:18:23 ora_p000_TESTDB testdb 32543 1 2 10:09 ? 00:17:41 ora_p001_TESTDB testdb 32545 1 2 10:09 ? 00:18:51 ora_p002_TESTDB testdb 32547 1 2 10:09 ? 00:15:55 ora_p003_TESTDB testdb 32549 1 3 10:09 ? 00:19:22 ora_p004_TESTDB testdb 32551 1 3 10:09 ? 00:24:52 ora_p005_TESTDB testdb 32553 1 3 10:09 ? 00:21:43 ora_p006_TESTDB testdb 32561 1 3 10:09 ? 00:24:52 ora_p007_TESTDB testdb 32563 1 1 10:09 ? 00:08:30 ora_p008_TESTDB testdb 32565 1 1 10:09 ? 00:07:20 ora_p009_TESTDB 我们现在来做一个映射,看看在数据库中的进程和系统进程的映射关系,可以看到分配的进程还是比较富裕的,有2个进程还是available的状态,剩下的都在使用,都是in use. SQL> select *from v$px_process; SERV STATUS PID SPID SID SERIAL# ---- --------- ---------- ------------------------ ---------- ---------- P000 IN USE 224 32541 4539 7523 P001 IN USE 226 32543 4921 3235 P002 IN USE 228 32545 5295 31345 P003 IN USE 229 32547 5487 29377 P004 IN USE 230 32549 5671 48289 P005 IN USE 231 32551 5863 10459 P006 IN USE 232 32553 6051 9605 P007 IN USE 233 32561 6240 32193 P009 AVAILABLE 238 32565 P008 AVAILABLE 237 32563 10 rows selected. 比如说进程32541这个进程 testdb 32541 1 2 10:09 ? 00:18:23 ora_p000_TESTDB 在数据库中的信息如下,可见映射是完整的。 SERV STATUS PID SPID SID SERIAL# ---- --------- ---------- ------------------------ ---------- ---------- P000 IN USE 224 32541 4539 7523 然后如果想知道更多协调进程的信息,可以使用v$session,v$process来关联。我们看到协调进程的sid是6620 select paddr, sid,serial#,username,osuser ,machine,process,terminal,type,to_char(LOGON_TIME,'yyyy-mm-dd hh24:mi:ss')login_time from v$session where sid=6620 PADDR SID SERIAL# USERNAME OSUSER MACHINE PROCESS TERMINAL TYPE LOGIN_TIME ---------------- ---------- ---------- ------------------------------ ------------------------------ ---------- ------------------------ ------------------------------ ---------- ------------------- 00000002597CEB88 6620 49463 TESTDB testdb testdb 21568 pts/3 USER 2014-10-06 20:52:55 有了这些信息,来和v$proess关联就能够看到对应的进程了。可以看到系统进程是21569. ADDR SPID PID ---------------- ------------------------ ---------- 00000002597CEB88 21569 115 SQL> !ps -ef|grep 21569 testdbuser 21569 21568 16 20:52 ? 00:06:33 oracleTESTDB (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) testdbuser 26835 26200 0 21:32 pts/1 00:00:00 /bin/bash -c ps -ef|grep 21569 testdbuser 26837 26835 0 21:32 pts/1 00:00:00 grep 21569 所以这些视图还是很实用的,至少在看到很多的并行进程的时候,能够有思路去查找倒底是哪儿在运行这些,可能有问题的部分。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2014-10-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏转载gongluck的CSDN博客

UNPv13:#附录A#IPv4、IPv6、ICMPv4和ICMPv6

IPv4首部 IP层提供无连接不可靠的数据报递送服务。它会尽最大努力把IP数据报递送到指定的目的地,然而并不保证它们一定到达,也不保证它们的到达顺序与发...

3266
来自专栏Theo Tsao

Ionic3学习笔记(十三)HttpClient 实现 HTTP 请求以及踩过的一些坑

当然是基于这篇古老的文章啦 ==> http://www.jianshu.com/p/9855610eb1d4 因为是2015年的文章,已经时隔2年多,很难确保...

3891
来自专栏代码GG之家

ANR 原理与实战技巧

? 00 手机用用,就卡卡卡。莫名其妙的出现一堆程序无响应,欲哭无泪。这是为什么呢?因为你用的android手机。 android手机,为了...

4867
来自专栏上善若水

005工具及环境之nmap一览

Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 ...

1153
来自专栏北京马哥教育

超详细!使用 LVS 实现负载均衡原理及安装配置详解

负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡...

43110
来自专栏蓝天

C/C++编程可用的Linux自带工具

GNU Binary Utilities或binutils是一整套的编程语言工具程序,用来处理许多格式的目标文件。当前的版本原本由在Cygnus Soluti...

1302
来自专栏上善若水

014android初级篇之基于GraphView绘制统计图表

在android的开发过程中,需要使用图表,图表有第三方的插件实现了该功能。目前有很多类似的功能插件,比如achartengine, Graphview等等。G...

2266
来自专栏即时通讯技术

一套高可用、易伸缩、高并发的IM群聊架构方案设计实践

本文原题为“一套高可用群聊消息系统实现”,由作者“于雨氏”授权整理和发布,内容有些许改动,作者博客地址:alexstocks.github.io。应作者要求,如...

1123
来自专栏jeremy的技术点滴

nagios安装配置

3957
来自专栏Adamshuang 技术文章

Zookeeper 通知更新可靠吗? 解读源码找答案!

遇到Keepper通知更新无法收到的问题,思考节点变更通知的可靠性,通过阅读源码解析了解到zk Watch的注册以及触发的机制,本地调试运行模拟zk更新的不可靠...

9758

扫码关注云+社区