学oracle几年了,今天才真正弄明白连接与会话的区别,真实惭愧,以前一直以为没啥区别,今天自己总结下。
1. 连接是物理层级的,是客户端与服务器之间一条具体的连接;会话则是逻辑层级的,可以理解是客户端与数据库实例间交流的基础
2. 会话可以理解为一个plsql窗口,开启一个窗口也就是新建了一个会话;连接可以理解为就是一个工作于服务器上的进程(或线程)
当客户端与服务器端用专用服务器模式连接时,这个连接就是一个服务器进程,当用共享模式连接时,这个连接就可能是一个调度进
程,反正都是实实在在工作在服务器上的东东;
3. 连接与会话并不是我们通常理解的一对一的关系,而是一种多对多的关系。
一对一:当服务器属于专用服务器模式工作时,会话与连接就是一种最常见的一对一的关系
零对一:当我们用专用服务器模式打开一个会话后,然后discon(sqlplus窗口命令)时,这个时候你的会话断开了,但是你的连接还
存在,可以通过v$process查看
多对一:当服务器的工作模式为共享服务器时,一个服务器进程就对应多个会话,客户端其实真正连接的是调度进程,再由调度进程
为我们动态的分配服务器进程;
多对多: 这也是存在于共享服务器模式下,有时候一个sql会经过几个服务器进程处理