关于oracle里的process总结

简介: 感觉需要对process做一个简单的总结。准备了如下的测试场景。session在服务端请求 先用sqlplus / as sysdba在服务端登录。 SQL> show userUSER is "SYS" 得到当前的session为5860. SQL> select sid from v$mystat where rownum        SID ----------       5860得到对应的Process。
感觉需要对process做一个简单的总结。准备了如下的测试场景。
session在服务端请求
先用sqlplus / as sysdba在服务端登录。
SQL> show user
USER is "SYS"
得到当前的session为5860.

SQL> select sid from v$mystat where rownum        SID
----------
      5860
得到对应的Process。这个其实就是客户端对应的process,因为是从服务端登录,所以在服务端应该会有两个process来对应,一个相当于客户端,一个相当于服务端 paddr是process对应的内存地址,在查询v$process的很有用。
SQL> select sid,username,process,paddr  from v$session where sid=5860;
       SID USERNAME                       PROCESS                  PADDR
---------- ------------------------------ ------------------------ ----------------
      5860 SYS                            28490                    000000035977B488
先来验证一下客户端的process 28490是不是存在。可以看到,28490是通过sqlplus的方式登录的。而且是另外一个连接的父进程。这个进程就是我们需要查询的在服务端存在的映射进程。
SQL> host ps -ef|grep 28490
oratestdb  6741 28490  0 14:48 pts/1    00:00:00 /bin/bash -c ps -ef|grep 28490
oratestdb  6743  6741  0 14:48 pts/1    00:00:00 grep 28490
oratestdb 28490  4017  0 14:45 pts/1    00:00:00 sqlplus   as sysdba
oratestdb 28491 28490  0 14:45 ?        00:00:00 oraclePETtest1 (DESCRIPTION=( LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

我们来查询v$process,看process是不是存在28491,spid就是对应的摄影进程,pid是数据库内部的进程标示。
查看进程明细,可以看到使用的bequence协议。

SQL> select pid,spid from v$process where addr='000000035977B488';  
       PID SPID
---------- ------------------------
        31 28491
SQL> host ps -ef|grep 28491
oratestdb 14578 28490  0 14:50 pts/1    00:00:00 /bin/bash -c ps -ef|grep 28491
oratestdb 14580 14578  0 14:50 pts/1    00:00:00 grep 28491
oratestdb 28491 28490  0 14:45 ?        00:00:00 oraclePETtest1 (DESCRIPTION=( LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

再来看另外一个场景。

session在客户端请求

通过sqlplus从客户端登陆。

#############
 select sid from v$mystat where rownum        SID
----------
      6049
      
 select sid,username,process,paddr  from v$session where sid=6049
SQL> /
可以看到对应的Process是824. 这个就是客户端所在的机器对应的process。
       SID USERNAME                       PROCESS                  PADDR
---------- ------------------------------ ------------------------ ----------------
      6049 JIANRONG                       824                    000000035977C508
SQL> host ps -ef|grep 824
oraccbs1   824 30352  0 17:05 pts/1    00:00:00 sqlplus                          
root      3824  3051  0  2013 ?        00:00:00 [aio/29]
oraccbs1 11079   824  0 17:06 pts/1    00:00:00 /bin/bash -c ps -ef|grep 824
oraccbs1 11082 11079  0 17:06 pts/1    00:00:00 grep 824
查看服务端对应的进程,是17175
SQL> select pid,spid ,username from v$process where addr='000000035977C508';
       PID SPID                     USERNAME
---------- ------------------------ ---------------
        32 17175                    oratestdb


登录服务端,查看进程情况,与客户端的场景不同的是,17175的父进程是1,为root根进程。
oratestdb@ccbdbpt4:/opt/app/oracle/dbtestspt1/oratestdb> ps -ef|grep 17175
oratestdb 17175     1  0 17:05 ?        00:00:00 oraclePETtest1 ( LOCAL=NO)
oratestdb 27196 24714  0 17:07 pts/1    00:00:00 grep 17175


对于客户端场景和服务端场景来说,如果一定要刨根问底的看某个session(比如 session 824)的父进程情况。可以看到最终的process 父进程还是1.
oratest1@:/opt/app/oracle/dbtestpt1/oratest1> ps -ef|grep 30352
oratest1   824 30352  0 17:05 pts/1    00:00:00 sqlplus                          
oratest1 20500 20060  0 17:23 pts/1    00:00:00 grep 30352
oratest1 30352 30347  0 16:34 pts/1    00:00:00 -bash
oratest1@:/opt/app/oracle/dbtestpt1/oratest1> ps -ef|grep 30347
oratest1 21993 20060  0 17:23 pts/1    00:00:00 grep 30347
oratest1 30347 29705  0 16:34 ?        00:00:00 sshd: oratest1@pts/1
oratest1 30352 30347  0 16:34 pts/1    00:00:00 -bash
oratest1@:/opt/app/oracle/dbtestpt1/oratest1> ps -ef|grep 29705
oratest1 23945 20060  0 17:23 pts/1    00:00:00 grep 29705
root     29705 25298  0 16:34 ?        00:00:00 sshd: oratest1 [priv]
oratest1 30347 29705  0 16:34 ?        00:00:00 sshd: oratest1@pts/1
oratest1@:/opt/app/oracle/dbtestpt1/oratest1> ps -ef|grep 25298
root     25298     1  0  2013 ?        00:00:03 /usr/sbin/sshd
oratest1 26659 20060  0 17:24 pts/1    00:00:00 grep 25298
root     29705 25298  0 16:34 ?        00:00:00 sshd: oratest1 [priv]



目录
相关文章
|
Oracle 关系型数据库 BI
Oracle-分析函数_总结
Oracle-分析函数_总结
|
SQL Oracle 算法
Oracle总结【SQL细节、多表查询、分组查询、分页】下
在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了…印象中就只有基本的SQL语句和相关一些概念….写下本博文的原因就是记载着Oracle一些以前没注意到的知识点…以后或许会有用… 实例与数据库概念
388 0
Oracle总结【SQL细节、多表查询、分组查询、分页】下
|
SQL Oracle 关系型数据库
Oracle总结【SQL细节、多表查询、分组查询、分页】上
在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了…印象中就只有基本的SQL语句和相关一些概念….写下本博文的原因就是记载着Oracle一些以前没注意到的知识点…以后或许会有用… 实例与数据库概念
215 0
Oracle总结【SQL细节、多表查询、分组查询、分页】上
|
SQL 存储 Oracle
Oracle总结【视图、索引、事务、用户权限、批量操作】三
在Oracle总结的第一篇中,我们已经总结了一些常用的SQL相关的知识点了…那么本篇主要总结关于Oralce视图、序列、事务的一些内容… 在数据库中,我们可以把各种的SQL语句分为四大类… (1)DML(数据操纵语言):select,insert,update,delete (2)DDL(数据定义语言):create table,alter table,drop table,truncate table (3)DCL(数据控制语言):grant select any table to scott/revoke select any table from scott (4)TCL(事务
265 0
Oracle总结【视图、索引、事务、用户权限、批量操作】三
|
SQL Oracle 关系型数据库
Oracle总结【视图、索引、事务、用户权限、批量操作】二
在Oracle总结的第一篇中,我们已经总结了一些常用的SQL相关的知识点了…那么本篇主要总结关于Oralce视图、序列、事务的一些内容… 在数据库中,我们可以把各种的SQL语句分为四大类… (1)DML(数据操纵语言):select,insert,update,delete (2)DDL(数据定义语言):create table,alter table,drop table,truncate table (3)DCL(数据控制语言):grant select any table to scott/revoke select any table from scott (4)TCL(事务
297 0
Oracle总结【视图、索引、事务、用户权限、批量操作】二
|
SQL 存储 Oracle
Oracle总结【视图、索引、事务、用户权限、批量操作】 一
在Oracle总结的第一篇中,我们已经总结了一些常用的SQL相关的知识点了…那么本篇主要总结关于Oralce视图、序列、事务的一些内容… 在数据库中,我们可以把各种的SQL语句分为四大类… (1)DML(数据操纵语言):select,insert,update,delete (2)DDL(数据定义语言):create table,alter table,drop table,truncate table (3)DCL(数据控制语言):grant select any table to scott/revoke select any table from scott (4)TCL(事务
293 0
Oracle总结【视图、索引、事务、用户权限、批量操作】 一
|
存储 SQL Oracle
|
存储 Oracle Java
|
SQL Oracle 关系型数据库

推荐镜像

更多