学无先后,达者为师

网站首页 编程语言 正文

oracle中的session

作者:杨壮壮666 更新时间: 2022-07-10 编程语言

一.什么是session?

       一般来说,session是通信双方从开始通信到通信结束期间的一个上下文(context)。这个上下文是一段位于服务器端的内存:记录了本次连接的客户端机器、通过哪个应用程序、哪个用户在登录等信息[在pl/sql developer中,通过Tools-->Sessions可以查看当前数据库的session]。 

       session 是和connection同时建立的,两者是对同一件事情不同层次的描述。简单讲,connection是物理上的客户机同服务器段的通信链路,session是逻辑上的用户同服务器的通信交互。

oracle中一个用户登录oracle服务器的前提该用户具有oracle的 “create session”权限。

       oracle允许同一个用户在同一个客户机上建立多个同服务器的连接,从oracle的视图V$session中可以看到[select * from v$session;]。

       每个session都代表了用户与服务器的一个交互。就像两个国家之间可以同时开展很多谈判,经济的,环境的等等。关闭了有关经济的谈判,不会影响到环境谈判的进行。

后台进程PMON会每隔一段时间,就会测试用户连接状况,如果连接已断开,PMON会清理现场,释放相关的资源。

二.在具体的应用场景中connction 和 session 有很多情况:

1. sqlplus 登录 oracle

这种场景比较容易理解,一个连接对应一个session。

2. 其他客户端工具登录oracle

比如:pl/sql developer

登录oracle。pl/sql developer 可以设置是否每个窗口共用同一个session. 如果想在调试窗口调试存储过程或函数,则必须设置为共享session。如果设置为非共享, www.linuxidc.com则每次打开一个操作窗口,pl/sql developer会利用最初输入的帐户和口令建立新的connection和session.

3. IIS 用程序登录oracle

这种情况下,其实是IIS在登录oracle。connection 和 session 的建立情况和iis机制相关。

“对于Oracle来说,安全的Sessions数应该为Sessions = (IIS process number) * (min pool size)。”

IIS进程:在IIS6.0中,采用了新的进程隔离模式来响应用户的请求,在IIS管理器中,可以设置应用程序池的最大进程数。对于新的WEB应用请求,IIS进程管理器会启动多个W3wp.exe进行响应。

4.其他情况有待补充

orcale的session内存

oracle 的连接分为两种:独占式,共享式。

在独占式连接情况下:session(如游标,排序去,sql区)是在PGA中分配的。

在共享式连接情况下:session的一部分(如UGA)是在中SGA的larg pool中分配的。

5.oracle session 和process

oracle中每个process 都有对应的session。

process 分为

用户进程在V$session 中可用条件:$session.type =‘USER’.查询。

后台进程在V$session 中可用条件:$session.type =‘BACKGROUND’查询。

6.常见的后台进程:

SMON,PMON,DBWR,LGWR,MMAN,MRP,RFS,RECO,CKPT,ARCH,Dnnn,Snnn,LMON,LMD0,QMNn,TRWR,WMON,LCKnnn,SNPnnn, MMON,DMON,SNP

7.session 相关的初始化参数:

process:oracle的连接数(sessions)与其参数文件中的进程数(process)相关,它们的关系如下:sessions=(1.1*process+5),可以通过修改inia.ora的这个process参数在更改可连接的最大session数。

workarea_size_policy:PGA用手动管理还是自动管, 在AUTO的时候每个session最多能用到5%或100M.

原文链接:https://blog.csdn.net/weixin_49889731/article/details/125592462

栏目分类
最近更新