进程、会话、连接之间的差异
-- 进程、会话、连接之间的差异
--========================
在使用Oracle database的时候,连接与会话是我们经常碰到的词语之一。咋一看貌似一回事,事实则不然。一个连接上可以建立零个、
一个、甚至多个会话。啊,咋这样呢?是的,没错。这也是我们经常误解的原因。
各个会话之间是单独的,独立于其他会话,即便是同一个连接的多个会话也是如此。
一、几个术语之间的定义(参照Oracle 9i &10g 编程艺术)
连接(connection):连接是从客户到Oracle 实例的一条物理路径。连接可以在网络上建立,或者通过IPC 机制建立。通常会在
客户进程与一个专用服务器或一个调度器之间建立连接。
会话(session):会话是实例中存在的一个逻辑实体。这就是你的会话状态(session state),也就是表示特定会话的一组内存
中的数据结构.提到"数据库连接"时,大多数人首先想到的就是“会话”。你要在服务器中的会话上执行SQL、提交事务和运行存储过程。
二、通过例子演示来查看之间的关系
1. 无连接,无会话,无进程的情形
2. 单个连接,单个会话,单个进程
3. 无连接,无会话,单个进程 4. 单个连接,多个会话,单个进程 set autotrace 完成的动作
有关启用set autotrace 请参考:启用 AUTOTRACE 功能
5.SID不变,serial#变化的情形
有关kill session的说明,请参考:Oracle 彻底 kill session
三、session与process的设置关系
session:指定了一个实例中允许的会话数,即能同时登录到数据库的并发用户数。
process: 指定了一个实例在操作系统级别能同时运行的进程数,包括后台进程与服务器进程。
由上面的分析可知,一个后台进程可能同时对应对个会话,因此通常sessions的值是大于processes的值
通常的设置公式
sessions = 1.1 * processes + 5
四、更多参考
DIFFERENCES BETWEEN PROCESSES, SESSIONS AND CONNECTIONS
五、快捷参考
有关性能优化请参考
有关ORACLE体系结构请参考
Oracle联机重做日志文件(ONLINE LOG FILE)
Oracle实例和Oracle数据库(Oracle体系结构)
有关闪回特性请参考
Oracle闪回特性(FLASHBACK DATABASE)
Oracle闪回特性(FLASHBACK DROP & RECYCLEBIN)
Oracle闪回特性(Flashback Query、FlashbackTable)
Oracle闪回特性(Flashback Version、Flashback Transaction)
有关基于用户管理的备份和备份恢复的概念请参考
Oracle基于用户管理恢复的处理(详细描述了介质恢复及其处理)
有关RMAN的备份恢复与管理请参考
RMAN 备份路径困惑(使用plus archivelog时)
有关ORACLE故障请参考
对参数FAST_START_MTTR_TARGET= 0 的误解及设定
有关ASM请参考
有关SQL/PLSQL请参考
SQL 基础--> 集合运算(UNION与UNION ALL)
SQL 基础--> 层次化查询(STARTBY ... CONNECT BY PRIOR)
SQL 基础--> ROLLUP与CUBE运算符实现数据汇总
有关ORACLE其它特性
使用OEM,SQL*Plus,iSQL*Plus 管理Oracle实例
日志记录模式(LOGGING、FORCE LOGGING 、NOLOGGING)
使用外部表管理Oracle 告警日志(ALAERT_$SID.LOG)
簇表及簇表管理(Index clustered tables)
ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAME
Oracle补丁全集 (Oracle 9i 10g 11g Path)