本篇介绍的是Oracle数据库中Session和Connection的区别。
在Oracle的官方文档上,对Session和Connection是这样解释的:
- Connection: Communicate pathway between a client process and an Oracle database instance.
连接:一个客户端进程和Oracle数据库实例之间的通信链路。
- Session: A logical entity in the database instance memory that represnts the state of a current user login to a database. A single connection can have 0, 1 or more sessions established on it.
会话:用于展示当前登录到数据库用户的状态的数据库实例内存中的一个逻辑实体。一个单独的连接可以有0,1,或者更多的会话。
事实上,Connection并不是直接建立在用户进程和数据库实例之间的。而是在用户进程和Server Process(服务器进程)之间的,因此有一个Connection就一定会有一个用户进程和一个服务器进程。但不一定会存在Session(下面的实验会证明这一点)。
我们通过实验来看下:
实验一,登录数据库(用SYS用户),通过查询V$SESSION视图得知相关的会话信息,而查询V