`
shelllgd
  • 浏览: 30063 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle中连接与会话的区别

阅读更多

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视图。

分享到:
评论

相关推荐

    Oracle数据库连接与会话

    Oracle数据库连接与会话

    oracle 最大连接数问题

    oracle 在实际部署环境下,会存在session 不能操作250的限制

    Oracle经典故障解析 连接数&会话数

    Oracle经典故障解析 连接数&会话数,一定要看看,非常不错的

    oracle超出最大连接数方案

    超出最大会话数和Ora-00020超出最大进程数错误的解决方法 Ora-00018 Maximum number of sessions exceeded超出最大会话数

    清空会话连接数

    xp最大连接数为10个,多了就会不可用,使用这个的话能能快速清空连接数

    打造上千万长连接及oracle调优

    NULL 博文链接:https://stevenfeng.iteye.com/blog/2020762

    Oracle 最大并发数、会话数查询

    1、查询Oracle并发数、会话数: select count(*) from v$session #当前的连接数 select count(*) from v$session where status='ACTIVE' #并发连接数 select value from v$parameter where name = 'processes' --...

    Oracle查看和修改连接数(进程/会话/并发等等)

    查看数据库当前会话的连接数: 代码如下: elect count(*) from v$session; 3.查看数据库的并发连接数: 代码如下: select count(*) from v$session where status=’ACTIVE’; 4.查看当前数据库建立的会话情况: 代码...

    会话与连接数.docx

    今天的内容主要讲的是会话与连接数的相关知识,希望大家通过我的讲解,可以对这方面的知识有一个初步的了解,如果在这个过程中能激发自己的学习乐趣,那么便是我所做的最大贡献了

    如何在Oracle 9i中正确转换时区

    在Oracle9i中,我们可以使用DBTIMEZONE伪字段查询数据库的时区,使用 SESSIONTIMEZONE伪字段查询会话的时区。但是,对于大多数数据库,这些值都是-07:00之类的偏移值,因此对于 NEW_TIME函数是没有用的。Oracle9i...

    oracle连接错误处理

    ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist 进程 ID: 0 会话 ID: 0 序列号: 0

    oracle连接数修改方法

    Oracle查看、修改连接数  1.查询数据库当前进程的连接数:  select count(*) from v$process;  2.查看数据库当前会话的连接数:  elect count(*) from v$session;

    Oracle SQL Handler(Oracle 开发工具) v5.1.zip

    (7) 多线程多连接,会话在运行中可以中断,或编辑,或创建新会话; (8) 监控批量SQL语句的运行,在运行中可暂停、更正等; (9) 以缩进的阶梯格式清晰地显示SQL的解释计划; (10)方便操作常用数据字典如表...

    ORACLE9i_优化设计与系统调整

    第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...

    服务器(ORACLE)启动与关闭.doc

    服务器(ORACLE)启动与关闭 一、重启服务器顺序: 关闭数据库(toppord/toptest) ( 重启设备(reboot) ( 开启数据库(只需要开启toptest,topprod已设置自动启用) 二、Linux下启动 oracle 数据库 -- ssh连接上数据库...

    Oracle相关命令操作

    Oracle登录sqlplus的方式,Oracle表空间基本操作,Oracle用户的基本操作,Oracle导入导出基本操作,Oracle查看当前和断开会话连接 ,Oracle11g数据导入10g数据库

    ORACLE 最大连接数的问题

    下面是具体的操作步骤与说明问题描述:客户端连接数据库报错 ORA-12516: TNS: 监听程序无法找到匹配协议栈的可用句柄 解决过程: 1。查看当前会话数、processes和sessions值,发现session数和2个参数的值已经非常...

    Oracle数据库管理员技术指南

    6.14.2 利用 Oracle Fail Safe 与远程热 备用数据库(仅 Windows NT 平台有效) 6.14.3 利用热备用数据库与远程镜像 6.15 回顾 第7章 备份和恢复技术 7.1 备份选项 7.2 操作系统备份 7.2.1 冷备份 7.2.2 ...

    Oracle Database 11g初学者指南--详细书签版

    3.3.3 Oracle连接管理器 56 3.3.4 会话多路复用 56 3.3.5 防火墙访问控制 57 3.4 使用Oracle Net Listener 57 3.4.1 密码验证 59 3.4.2 多个监听进程 59 3.4.3 连接池 59 3.5 命名方法 60 3.5.1 目录命名...

Global site tag (gtag.js) - Google Analytics