select
s.username, s.program, s.server, s.osuser,
s.process, p.spid, p.program, s.sid, s.serial#
from v$session s
join v$process p on p.addr=s.paddr
where s.username is not null
;
USER PROGRAM SERVER OSUS PROCESS SPID PROGRAM SID SERIAL#
---- -------------------------- --------- ---- ---------------- -------- -------------------------- ---------- ----------
DB sqlplus.exe DEDICATED db 14824:9844 2025 oracle@mpsrv 137 31220
DB sqlplus@mpsrv (TNS V1-V3) DEDICATED db 2068 2072 oracle@mpsrv (TNS V1-V3) 135 32936
其中: process - 用户进程 spid - 服务器进程 user/osuser - 数据库/OS 中的用户名(这里 db 不是数据库,这些是我的首字母缩写)。
第一行是远程sqlplus,第二行是数据库服务器上的本地。请注意,bequeath协议在本地使用,服务器进程是用户进程的直接分支,即 没有网络监听器的连接:
Oracle DB 创建一个服务器进程来处理来自连接到特定实例的用户进程的请求。
服务器进程:在 *NIX 上这是一个系统级进程(从 12c 开始可以配置为线程)。在 WIN 下,它始终是一个流。
用户进程:这是在远程系统或安装了数据库的系统上运行的客户端应用程序,并且包含一个或多个类型的连接请求(取决于 PL)
OracleDriver.connect (params)。服务器进程可以是:
专用,只服务一个用户进程
共享(分布式),它服务于多个用户进程(以前称为 MTS - 多线程服务器)
默认情况下,始终配置专用服务器。要配置分布式服务器,您需要更改 SPFILE: 中的初始化参数
shared_servers=3,其中 3 是进程数。或命令:如果已配置分布式服务器,则使用 network 参数作为专用服务器进行连接:
SERVER=DEDICATED。选择标准:
分布式服务器是在版本 7 中引入的,当时系统资源(首先是内存)非常昂贵,因此可以节省它们。目前,这些节省不再显着。在专用服务器的情况下,分发(调度)没有开销,因此这种配置更有效率。
尽管事实上关闭。在文档中,仍将共享服务器列为首选,但在 95% 的情况下,配置为专用服务器更合适。
如果有许多客户端进程不使用与数据库的持续连接,则最好使用分布式服务器,即 调用连接,更新一个或多个表,然后执行显式或隐式断开连接。任何对现代软件架构有点熟悉的人都会注意到这种情况已经过时了。
在系统级别为专用服务器生成的示例(为了更好地理解链接问题):
其中:
process - 用户进程
spid - 服务器进程
user/osuser - 数据库/OS 中的用户名(这里 db 不是数据库,这些是我的首字母缩写)。
第一行是远程sqlplus,第二行是数据库服务器上的本地。请注意,bequeath协议在本地使用,服务器进程是用户进程的直接分支,即 没有网络监听器的连接:
阅读更多:关闭。文件