关于oracle里的process总结(45天)
感觉需要对process做一个简单的总结。准备了如下的测试场景。
session在服务端请求
先用sqlplus / as sysdba在服务端登录。
SQL> show user
USER is "SYS"
得到当前的session为5860.
SQL> select sid from v$mystat where rownum<2;
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<2;
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]
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【DB笔试面试853】在Oracle中,什么是手动建库?手动建库有哪些步骤?
- 使用 Intel HAXM 为 Android 模拟器加速,媲美真机
- NHibernate 使用 SqlQuery
- 谈谈 INotifyPropertyChanged 的实现
- C 语言小知识
- 使用代码配置 NHibernate
- [Introduction]Go特殊的引用类型:值传递/指针传递/引用传递
- PythonforResearch | 0_语法基础
- iOS 系统中的视图动画
- 在 Android 的 /data 目录下添加虚拟内存
- 玩转安卓模拟器命令行
- 如何利用NLog输出结构化日志,并在Kibana优雅分析日志?
- Android 应用保存状态
- 2020-8-9日报:修复zip在某些X64机器上的运行崩溃问题
- 专题一:预处理数据(使用sklearn-preprocessing)