oracle的进程、会话、连接之间有什么差异

--========================

-- 进程、会话、连接之间的差异

--========================

在使用Oracle database的时候,连接与会话是我们经常碰到的词语之一。咋一看貌似一回事,事实则不然。一个连接上可以建立零个、

一个、甚至多个会话。啊,咋这样呢?是的,没错。这也是我们经常误解的原因。

各个会话之间是单独的,独立于其他会话,即便是同一个连接的多个会话也是如此。

一、几个术语之间的定义(参照Oracle 9i &10g 编程艺术)

连接(connection):连接是从客户到Oracle 实例的一条物理路径。连接可以在网络上建立,或者通过IPC 机制建立。通常会在

客户进程与一个专用服务器或一个调度器之间建立连接。

会话(session):会话是实例中存在的一个逻辑实体。这就是你的会话状态(session state),也就是表示特定会话的一组内存

中的数据结构.提到"数据库连接"时,大多数人首先想到的就是“会话”。你要在服务器中的会话上执行SQL、提交事务和运行存储过程。

二、通过例子演示来查看之间的关系

1. 无连接,无会话,无进程的情形

[-->没有建立建立连接时,没有任何会话服务器进程

[oracle@odbp ~]$ ps -ef | grep oracleorcl

oracle    5685  5446  0 19:30 pts/1    00:00:00 grep oracleorcl

[oracle@odbp ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on Mon Jun 27 19:30:49 2011

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

idle> ho ps -ef | grep oracleorcl    -->使用nolog登录是同样也看不到任何会话服务器进程

oracle    5691  5686  0 19:31 pts/0    00:00:00 /bin/bash -c ps -ef | grep oracleorcl

  2. 单个连接,单个会话,单个进程

-->使用scott身份登录,有一个对应的服务器进程被产生

idle> conn scott/tiger

Connected.

scott@ORCL> select sid,serial#,username from v$session where username is not null;

  SID    SERIAL# USERNAME

---------- ---------- -------------------------

  159          5 SCOTT

scott@SQL> ho ps -ef | grep oracleorcl

oracle    5696  5686  0 19:32 ?        00:00:00 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle    5699  5686  0 19:32 pts/0    00:00:00 /bin/bash -c ps -ef | grep oracleorcl

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

时间: 2024-10-31 17:48:01

oracle的进程、会话、连接之间有什么差异的相关文章

ORACLE会话连接进程三者总结

概念介绍      通俗来讲,会话(Session) 是通信双方从开始通信到通信结束期间的一个上下文(Context).这个上下文是一段位于服务器端的内存:记录了本次连接的客户端机器.通过哪个应用程序.哪个用户登录等信息.        连接(Connection):连接是从客户端到ORACLE实例的一条物理路径.连接可以在网络上建立,或者在本机通过IPC机制建立.通常会在客户端进程与一个专用服务器或一个调度器之间建立连接.        会话(Session) 是和连接(Connection)

用户如何与Oracle数据库服务器建立连接

用户要想使用Oracle数据库,首先要与数据库建立连接.针对数据库连接,Oracle提供了两种解决方式:专用连接和共享连接. 大部分情况下,我们使用专用连接方式.对专用连接来说,用户在客户端启动了一个应用程序,比如SQL*Plus,于是就在客户端本地启 动了一个用户进程.与Oracle服务器成功建立连接以后,就会在数据库服务器端生成一个对应的服务器进程,该服务器进程作为用户进程 的代理 进程,也叫影子进程,从而代替客户端去执行各种命令并将结果返回.也就是说,用户在客户端输入的各种命令,都是通过位

oracle 11g的驻留连接池

oracle在11g中引入了database resident connection pooling(DRCP).在此之前,我们可以使用dedicated 或者share 方式来链接数据库,dedicated方式是oracle数据库默认的链接方式,无需过多的配置,而且关于dedicated的bug也是非常少的,因此,通常情况下,建议使用dedicated方式来链接数据库.但是,在服务器资源有限,并且同时连接数据库的用户量非常大时,dedicated方式就无能为力了.假设并发用户为5000,每个d

求解惑,进程和端口之间关系??

问题描述 提问:进程和端口之间的关系?端口必然有进程监听,而进程不一定需要开启端口,这么理解对否? 按照我以上的理解,如果进程需要对外通讯,就需要监听端口.而如果本机进程间的通讯,应该不需要的,只是不知怎么通讯? 在win7 下做了个试验,将TCP/IP 协议停止,网卡也停止,然后开启 tomcat , 8080 端口,用本机:127.0.01:8080,还是可以访问,这说明短端口还在,可是 TCP/IP 是停止的, 网卡也停止的,那么 这个127.0.01 这个特殊的回环 IP 是不通过网卡的

ORACLE 8i的普通连接技术的介绍

oracle ORACLE 8i的普通连接技术的介绍 ==================================== 欢迎大家同我交流:小白  enhydra_boy@tom.com 欢迎转载,请保留本声明,谢谢! ====================================   Oracle 8.1.6 中引入普通连接技术的概念(Generic connectivity),这一连接解决方案满足了对许多异种数据库存储的数据访问需求,同时并不需要安装ORACLE的透明网关(O

利用Oracle自带的连接缓冲类的一个例子

import java.sql.Connection; import oracle.jdbc.pool.OracleConnectionCacheImpl; /** * 连接池管理类 */ public class DBPool { /** 连接池 */ private static OracleConnectionCacheImpl pool = null; /** * 初始化连接池 */ public static void init() { try{ String user = "user

关闭Oracle死锁进程的具体步骤

有效关闭Oracle死锁进程的具体步骤: 1.查哪个过程被锁 查V$DB_OBJECT_CACHE视图: SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER='过程的所属用户' AND CLOCKS!='0'; 2. 查是哪一个SID,通过SID可知道是哪个SESSION 查V$ACCESS视图: SELECT * FROM V$ACCESS WHERE OWNER='过程的所属用户' AND NAME='刚才查到的过程名'; 3. 查出SID和SERIAL#

oracle数据库-oracle 创建shared dblink连接不成功

问题描述 oracle 创建shared dblink连接不成功 oracle 创建shared dblink能创建成功,当是连接不成功.求高手指教

归档内存-服务器内存告警,发现是oracle 归档进程arch 占用超过10G(每个arch进程)

问题描述 服务器内存告警,发现是oracle 归档进程arch 占用超过10G(每个arch进程) 服务器是aix: 如下归档进程占用的内存查询 arch1: Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB 917924 oracle 5316319 65600 71 5264722 Y N N PageSize Inuse Pin Pgsp Virtual s 4 KB 69375 0 71 17778 m 64 KB 323838 4