Oracle中连接与会话的区别

2023-11-08

1.oracle中文概念手册

连接 (connection)与会话 (session)这两个概念均与用户进程 (user process)紧密相关,但二者又具有不同的含义。

连接 :用户进程和 Oracle 实例间的通信通道(communication pathway)。这个通信通道是通过进程间的通信机制(interprocess communication mechanisms)(在同一个计算机上运行用户进程和 Oracle 进程)或网络软件(network software)(当数据库应用程序与 Oracle 服务器运行在不同的计算机上时,就需要通过网络来通信)建立的。

会话 :用户通过用户进程与 Oracle 实例建立的连接[此处连接与上文中的连接含义不同 ,主要指用户和数据库间的联系 ]。例如,当用户启动 SQL*Plus 时必须提供有效的用户名和密码,之后 Oracle 为此用户建立一个会话。从用户开始连接到用户断开连接(或退出数据库应用程序)期间,会话一直持续。

Oracle 数据库中的同一个用户可以同时创建多个会话。例如,用户名/密码为的SCOTT/TIGER 用户可以多次连接到同一个 Oracle 实例。

当系统没有运行在共享服务模式下时,Oracle 为每个用户会话创建一个服务进程(server process)。而当系统运行在共享服务模式下时,多个用户会话可以共享同一个服务进程。

2.通过实例理解(备注此实力来源于http://hi.baidu.com/bystander1983/blog/item/7201a3835d1961ab0cf4d294.html)

有A/B两个城市,需要从A运送白菜 到B城

先建一条公路
然后运送白菜过去,包括准备白菜和运送白菜以及返回等一系列的动作。

一条公路,可以运送0-n次的白菜
当然从A到B的公路也可能不只一条
某一次运送白菜,可以在真正上路时才开通某一条道路
一次运送不会影响别的运送的状态


对应数据库
A代表客户端进程
B代表服务器端进程
公路代表连接
运送一次白菜代表一个会话

一个连接可以进行多次的会话
一个会话可以不依赖于某个连接,甚至没有连接(当我准备好了,真正开始运送时再建立连接)
一个会话不会影响别的会话

3 来源于(http://book.51cto.com/art/200707/51921.htm)

连接并不是会话的同义词。一个连接可能有零个、一个或多个建立在其上的会话。每个会话是分开且独立的,即使他们共享一个同样的物理连接到数据库。会话中的某个提交并不影响在该连接上的任何其他会话。事实上,使用该连接的每个会话可以使用不同用户身份。在Oracle中,一个连接是一个在客户端进程与数据库实例之间的物理线路——网络连接。该连接可能是一个专用服务器进程或一个调度进程。一个连接可以有零个或更多的会话,即一个连接的存在并不一定伴随着对应的会话存在。另外,一个会话不一定有连接。一个物理连接可以被客户端删除,只保留一个空闲会话。当客户端要在该会话中完成一些操作时,就需要重新建立物理连接。
  •连接:一个连接是一个从客户端到一个数据库实例的物理通道。一个连接或者通过网络或者通过IPC机制建立连接。最典型的连接是建立在客户端进程和专用服务器或共享服务器之间。然而,使用Oracle的连接管理器(CMAN)时,一个连接可以是在客户端与CMAN之间或CMAN与数据库之间。
  •会话:一个会话是存在于实例中的逻辑实体。它是一个表示唯一会话的内存数据结构的集合,用于执行SQL、提交事务并运行服务器中存储过程等。
实际上,一个连接有多个会话是非常普遍的。使用SQL*Plus可以说明连接和会话间的区别。使用autotrace命令时可产生两个会话。通过一个使用单个进程的连接也可以建立两个会话。首先,执行以下操作。

SQL>select username,sid,serial#,server,paddr,status
from v$session
where username=USER
/
USERNAME SID SERIAL#SERVER PADDR STATUS
----------- --- ------ ------ ------------ -----
OPS$TKYTE 153  3196  DEDICATED AE4CF614 ACTIVE

其中,user是系统函数,结果为当前连接数据库的用户。目前结果显示的是一个单独连接专用服务器的会话。PADDR列是唯一的专用服务器进程的地址。
其次,打开autotrace,来查看在SQL*Plus中执行语句的统计数据。

SQL>set autotrace on statistics
SQL>select username,sid,serial#,server,paddr,status
from v$session
where username=USER
/   

这样,就打开了两个会话,但是两者都使用一个专用服务器进程。查询结果显示它们都有相同的PADDR列值。因此,两个会话使用一个进程,即单个连接。注意,其中一个会话,即最初的会话(SQL*Plus),是处于主动(active)状态。该会话运行查询显示结果信息。但另外一个处于被动状态(inactive)的会话就是autotrace会话,其职责是监视第一个会话并报告该会话所做的一切。
在SQL*Plus中打开autotrace后,当执行DML操作(insert、update、delete、select和merge)时,SQL*Plus将完成下列操作。
1)如果第二个会话不存在,则使用当前连接创建一个新的会话。
2)SQL*Plus要求产生的新会话查询v$sesstat视图,为运行DML的会话记录初始统计数据。
3)在第一个会话中运行DML操作。
4)在完成DML语句后,SQL*Plus 将要求其他会话再次查询V$sesstat并产生显示执行DML会话在统计数据上的差异报告。
如果关闭autotrace,SQL*Plus将终止第二个会话并不再监视v$session视图。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle中连接与会话的区别 的相关文章

  • 如何在存储过程中使用名称求和和分组?

    我想对钱列求和 但我想要状态中的组名称和代码 这是存储过程代码 Sql Server 2008 SELECT um upmoney as money um pId as code um FName as name up status as
  • SQL FORMAT 函数错误

    这个SQL select FORMAT lNum from rpt myView 产生以下错误 参数数据类型 varchar 对于格式的参数 1 无效 功能 lNum is a varchar 10 运行 SQL Server 2012 v
  • SQL如何显示某个日期之前的数据

    我有几张桌子 一个是一个工人表显示工人代码 名字和姓氏 工作日期其中显示工人代码 工作开始日期 结束日期和工作区域代码 导师有工人编号 名字 姓氏和工作区号 Job area有工作区域代码名称和主管 我想要做的是在日期 10 09 10 之
  • 方法“Boolean Contains(System.String)”不支持对 SQL 的转换

    方法 Boolean Contains System String 不支持对 SQL 的转换 查询是 IsQueryable 但这停止工作 foreach string s in collection1 if s Length gt 0 q
  • ADO.NET 池连接无法重用

    我正在开发一个 ASP NET MVC 应用程序 该应用程序使用 EF 6 x 来处理我的 Azure SDL 数据库 最近 随着负载的增加 应用程序开始进入无法再与 SQL 服务器通信的状态 我可以看到有 100 个到我的数据库的活动连接
  • 金融 - 计算到期收益率

    我读了this https stackoverflow com questions 1173555 open source financial library specifically yield to maturity发布关于 net 库
  • 如何比较 Postgresql 中日期时间字段中的日期?

    在比较 postgresql Windows 中的版本 9 2 4 中的日期时 我遇到了一个奇怪的情况 我的表中有一列说update date与类型timestamp without timezone 客户可以仅使用日期搜索此字段 例如 2
  • 选择每组最新的项目[重复]

    这个问题在这里已经有答案了 可能的重复 检索每组中的最后一条记录 https stackoverflow com questions 1313120 retrieving the last record in each group 我有 2
  • 查询从同一表中的另一条记录获取值并按大于间隙阈值的差异进行过滤

    我将数据导入到 MS Access 中的临时表中 如下所示 我添加了需要使用 SQL 查询计算的 Gap 和 Previous Current 列 间隙阈值 是用户输入或范围提供给查询和例如是 300 GlobalID 对 ItemID 进
  • max()、分组依据和排序依据

    我有以下 SQL 语句 SELECT t client id max t points AS max FROM sessions GROUP BY t client id 它只是列出了客户 ID 以及他们所获得的最大积分 现在我想按 max
  • JbdcTemplate - 带有动态 SQL 查询的PreparedStatements

    I know jdbcTemplate可以用来创建PreparedStatements如果你这样设置 i e private JdbcTemplate jdbcTemplate String sqlQuery Select from tab
  • Wordnet sqlite 同义词和示例

    我正在尝试获取给定 wordid 的同义词和示例列表 经过大量的试验和错误 我可以获得所有同义词集的样本 但不是实际的同义词 这是我的查询 它给出了以下结果 select senses wordid senses synsetid sens
  • 如何从连接字符串中提取数据库名称,而不考虑 RDBMS?

    我正在研究一个不知道正在使用的 RDBMS 的课程 当然 应用程序的其余部分都清楚这一点 连接字符串是此类的输入 我需要数据库名称 无论 RDBMS 如何 如何从连接字符串中提取数据库名称 我读到以下问题 如何使用 SqlConnectio
  • 删除前导零

    给定列中的数据 如下所示 00001 00 00026 00 我需要使用 SQL 删除空格后面的所有内容以及值中的所有前导零 以便最终输出为 1 26 我怎样才能最好地做到这一点 顺便说一句 我正在使用 DB2 这已在 DB2 for Li
  • SQL 查询结果为字符串(或变量)

    是否可以将SQL查询结果输出到一个字符串或变量中 我的php和mysql不好 假设我有数据库 agents 其中包含列 agent id agent fname agent lname agent dept 使用此查询 sql SELECT
  • 如何将此本机 SQL 查询转换为 HQL

    所以我有这个很长的复杂的 Native SQLQuery string hql SELECT FROM SELECT a rownum r FROM select f2 filmid f2 realisateurid f2 titre f2
  • 常量值如何影响连接的 ON 子句?

    我最近发现 LEFT JOIN 的 ON 子句可能包含 1 1 等值 这让我感到不安 因为它打破了我对连接功能的看法 我遇到过以下情况的更详细版本 SELECT DISTINCT Person ID FROM Person LEFT JOI
  • 如何限制两个表之间一对多关系中的多个数量?

    我有一个带有两个 MySql 表的 MySQL 数据库 第一个是第一个表 表 A 有一列具有唯一值 从值 从 1 到 n 在第二个表 2 表 B 中 我有两列 在第一个表中我有一个名称 在第二个我的值从 1 到 n 如果我在 中添加一个值
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS
  • 将十六进制转换为字符串

    我想用HEXTORAW 从 ASCII 十六进制代码 30 获取 char 值 ASCII HEX 30 应返回 varchar 0 该怎么做呢 是HEXTORAW 正确的功能 你可以使用utl raw http docs oracle c

随机推荐

  • LeetCode(力扣)题目中二叉树的如何生成?根据给定顺序列表生成二叉树(python)

    在刷 leetcode 二叉树相关的题目时 经常有这样给定的例子 例如 检查平衡性 实现一个函数 检查二叉树是否平衡 在这个问题中 平衡树的定义如下 任意一个节点 其两棵子树的高度差不超过 1 示例 1 给定二叉树 3 9 20 null
  • Mybatis-plus 分页排序 错乱-丢失

    今天生产环境出行了一个分页排序错乱的问题 当时有点懵 用的mybatis plus的分页插件实现的 往常也用但是没有出现这个 分页排序 错乱 丢失问题 说实话当时有点懵 经过排查分析 得出了结果 Mybatis plus 分页排序 错乱 丢
  • C语言变参数函数详解

    文章目录 一 前言 二 printf函数源码 三 C语言函数调用堆栈过程 调用约定 压栈过程 那么再来看看其他情况 四 C语言实现可变参数详解 五 需要关注的一些问题 一 前言 在C语言中 我们不管是使用标准库函数还是使用自定义的函数 我们
  • 帧同步(LockStep)该如何反外挂

    在中国的游戏环境下 反挂已经成为了游戏开发的重中之重 甚至能决定一款游戏的生死 吃鸡就是一个典型的案例 目前参与了了一款动作射击的MOBA类游戏的开发 同步方案上选择了帧同步技术 LockStep而非snapshots以下同 那么就有很多人
  • LUA实现麻将胡牌判定

    用LUA实现麻将胡牌的一个思路 hand table 41 42 43 22 21 43 22 11 11 11 42 33 33 33 手牌 card count table 1 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8
  • 【若依】线程池,分页工具,定时任务,aop日志,全局异常处理功能实现

    若依 线程池 分页工具 定时任务 aop日志 全局异常处理功能实现 1 分页工具 使用方法 在调用sql语句前 调用 PageHelper startPage 方法就行了 若依包装过了 调用startPage 方法 1 pagehelper
  • 用c++编写的植物大战僵尸

    源码如下 include
  • 显卡3080设备CentOS 7.9 环境安装最新anconda、tensorflow-gpu 、cudatoolkit、cudnn、 python

    目标 使用3080显卡搭建环境 系统安装 显卡驱动安装 安装anconda 安装 python 安装 cuda 安装 cudnn 安装 tensorflow 一 系统安装 详见历史文档 二 显卡驱动安装 详见历史 三 整理自己需要安装的环境
  • 期货不变的本质是什么意思(期货不变的本质是什么意思呀)

    期货的本质是什么 本质是一个风险转移工具 通过把风险转移给愿意投机获利 亏损的人 产业方得以获得确定的盈利预期 这是期货的核心价值 狭义理论认为期货市场是 零和 负和 游戏 但如果把眼光放宽 把实体产业加进来 可以发现期货是市场环境里一项必
  • web python识花_TensorFlow迁移学习识花实战案例

    TensorFlow 迁移学习识花实战案例 本文主要介绍如何使用迁移学习训练图片识别花朵的模型 即识别出图片上是何种花朵 本文档中涉及的演示代码和数据集来源于网络 你可以在这里下载到 TRANSFER LEARNING zip 本模块将通过
  • cocos2d-x客户端与Java服务器的通信(一)

    o 貌似自己已经有一段时间没有写博客了 其实主要原因还是觉得自己水平有限 加上上班实在是太忙 实在抽不出时间来写博客 言归正传 大家都知道 在网络游戏开发中 网络通信一直是个比较大的难题 一个服务器可能要同时处理几千上万甚至上百万的用户数据
  • 14款开源或免费的GIS软件

    1 QGIS 原称Quantum GIS QGIS 原称Quantum GIS 是一个跨平台的桌面GIS软件 它提供数据的显示 编辑和分析功能 可以自动生成地图 并且能够处理地理空间数据 最后形成你期待的地图数据 它于2004年成为地理空间
  • Idea使用工具Statistic进行代码数量,注释的统计

    Statistic是idea上面的一个用于统计代码数量 注释数量的工具 1 安装 重启idea后 工具就能直接使用 如过没有结果的话 刷新下 扩展设置
  • 中缀表达式转后缀表达式

    一 什么是中缀表达式 后缀表达式 二 中缀表达式转后缀表达式 例题 中缀表达式 10 20 2 3 2 8 转换为对应的后缀为 后缀表达式 10 20 2 3 2 8 解题思路 1 观察两表达式 后缀明显没有 这两个符号 其次与中缀相比数字
  • git push origin master报错的解决方法 & 常见git命令(待更新)

    git push origin master报错的解决方法 常见git命令 待更新 参考Git常用命令 文章目录 git push origin master报错的解决方法 常见git命令 待更新 1 git push origin mas
  • c语言:折半查找法(二分查找法)

    折半查找法 half interval search 优点 比较次数少 查找速度快 平均性能好 缺点 是要求待查表为有序表 且插入删除困难 因此 折半查找方法适用于不经常变动而查找频繁的有序列表 注意 折半查找法仅适用于对已有顺序的数组 数
  • JDBC连接mysql的url的写法和常见属性

    URL jdbc mysql host port database 其后可以添加性能参数 propertyName1 propertyValue1 propertyName2 propertyValue2 MySQL 8 0 以上版本的数据
  • 2. 刘二大人《PyTorch深度学习实践》作业--梯度下降

    这里 我在刘老师的基础上做了改进 将线性函数改为了 y w x b y wx b y wx b 以下实现都是基于此线性函数做的 1 梯度下降 import n
  • 网站搭建的详细步骤-宝塔建站前沿篇!

    导语 宝塔建站是现代建站过程中一种简单而高效的方式 本文将为您详细介绍宝塔建站的步骤 让您轻松创建自己的网站 一 选择合适的虚拟主机 1 在宝塔官网下载并安装宝塔面板 2 打开宝塔面板 在左侧面板选择 网站 点击 添加站点 开始站点创建过程
  • Oracle中连接与会话的区别

    1 oracle中文概念手册 连接 connection 与会话 session 这两个概念均与用户进程 user process 紧密相关 但二者又具有不同的含义 连接 用户进程和 Oracle 实例间的通信通道 communicatio