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数据库管理系统中的两个核心概念。它们之间存在一定的关系,但又有着明显的区别。 连接是一种从客户端到数据库实例的物理通道,可以通过网络或IPC机制建立连接。连接可以是专用...
在使用Oracle数据库的过程中,连接数和会话数是影响系统性能的关键因素。下面将详细解析这两个概念,以及它们在Oracle故障排查中的重要性。 1. 连接数和会话数的概念:在Oracle中,连接数指的是同一时间连接到...
在实际的部署环境中,Oracle 数据库经常会遇到连接数受限的问题。特别是在使用如 WebLogic 或 WebSphere 这类中间件时,通过连接池的方式虽然可以有效提升数据源的连接数,但仍然可能会遇到连接数达到一定阈值后无法...
在Oracle数据库管理与维护过程中,有时会遇到“连接空闲例程”(Idle Connection Routine)的问题。这类问题通常发生在长时间未使用的连接上,由于缺乏活动导致连接被Oracle认为是闲置状态,进而可能引发一系列错误...
四、在C++中实现Oracle连接池 1. 初始化:首先,需要初始化环境和会话,设置必要的参数,如数据库服务器地址、端口、用户名、密码等。 2. 创建连接池:通过oci池化函数ociPoolCreate创建连接池,指定最小、最大连接...
为了与Oracle数据库进行交互,我们需要可靠的连接工具。"Oracle数据库连接工具"指的是可以方便地连接到Oracle数据库并执行各种操作的软件应用。在给定的标签中提到了"oracle navicat",这指的是Navicat,一个知名的...
超出最大会话数和Ora-00020超出最大进程数错误的解决方法 Ora-00018 Maximum number of sessions exceeded超出最大会话数
【会话与连接数】在Oracle数据库系统中,会话(Session)和连接(Connection)是两个关键概念,它们对于理解和优化数据库性能至关重要。 会话,简单来说,是一个用户与Oracle服务器之间交互的逻辑单元,它包含了...
在Oracle数据库环境中,调整最大连接数是一项重要的系统管理任务,它直接影响到数据库能够同时处理的会话数量。本篇将详细探讨如何通过Oracle参数来修改最大连接数,包括理解相关参数的意义、查看当前设置、以及实际...
通过细致地调整Oracle数据库的`pga_aggregate_target`、`processes`、`sessions`参数,以及优化`LISTENER.ORA`文件和操作系统配置,可以有效解决Oracle连接数问题,提升数据库的并发处理能力。这些操作需要根据具体...
在 Oracle 数据库管理系统中,数据库实例能够处理的最大并发用户连接数量是由 `processes` 参数控制的。此参数定义了数据库实例可以同时支持的最大进程数,其中包括用户会话、后台进程等。 #### 知识点二:查看 `...
Java连接Oracle数据库主要依赖于两种方法:JDBC和SQLJ。这两种方法都是Oracle8i及其后续版本中为Java开发者提供的数据库交互方式。 JDBC(Java Database Connectivity)是一种标准的Java API,它允许Java应用程序...
在本场景中,“OracleOCI连接数据库使用”指的是使用OCI库来建立和管理与Oracle数据库的连接。 Navicat Premium是一款多数据库管理工具,支持包括Oracle在内的多种数据库系统。在描述中提到“用于Navicat Premium...
在Oracle数据库环境中,最大连接数是指系统可以同时处理的最大并发用户连接数量。这一参数对于确保数据库性能稳定、响应快速至关重要。本文将详细介绍如何修改Oracle数据库中的最大连接数,并解释每一步操作的具体...
会话级临时表是指临时表中的数据只在会话生命周期中存在,当用户退出会话结束的时候,Oracle 自动清除临时表中数据。这种类型的临时表可以使用 ON COMMIT DELETE ROWS 说明,表示每次提交后 Oracle 将截断表(删除...
在Oracle数据库系统中,用户连接问题是一个常见的管理任务,特别是在多用户环境中。本文将详细解释如何查看和管理Oracle中的用户连接,以及如何获取客户端的IP地址。 首先,要查看当前Oracle数据库中的用户连接,你...
在处理Oracle数据库的使用过程中,经常会遇到因连接数设置不当导致的连接问题。当数据库用户无法连接,或者在连接后被意外断开,这往往是因为Oracle数据库在创建时,最大连接数被设置得较小。这样的设置虽然能够满足...
当需要在Delphi环境中与Oracle数据库进行交互时,通常会利用Oracle Call Interface (OCI) 或 Oracle Call Interface via C++ (OCCI) 这两种接口。本篇文章将详细介绍如何在Delphi中通过OCI连接到Oracle数据库,以及...
这些组件和库为开发者提供了丰富的API和图形化界面,使得在Delphi中编写Oracle连接代码变得简单。 描述中的“Delphi连接Oracle数据库的通用登录模块”暗示我们将讨论如何创建一个可以复用的登录组件或类,用于在...
3. **编写连接代码**:在VC++代码中,你需要初始化Oracle环境,创建会话,并建立到数据库的连接。这通常涉及到以下几个步骤: - 初始化环境(`OCIEnvCreate`):分配内存并设置环境变量。 - 创建会话(`...