ITPub博客

首页 > Linux操作系统 > Linux操作系统 > V$PROCESS 与 V$SESSION 的对应关系

V$PROCESS 与 V$SESSION 的对应关系

原创 Linux操作系统 作者:davidyu720 时间:2019-03-28 18:27:06 0 删除 编辑

关系是 1 : 0~n

如:会话结束后,进程可以保留;
又如:一个进程可以产生两个会话(另一个来统计前一个的 v$sesstat)
SQL*PLUS:
DISCONNECT 更准确的叫法是 DESTROY_ALL_SESSIONS
CONNECT 更准确的叫法是 CREATE_SESSION

自己的一些理解:

当用户连接数据库后,SERVER端会启动ORACLE用户进程,并创建一个session;
当用户disconnect后,ORACLE用户进程依然还在,但session会被关闭。
当用户重新连接时,会创建一个新session;
如果用户启动会话统计跟踪 set autotrace on stat 则该ORACLE用户进程会创建一个新的session来统计原session的数据。


ref:

1)Ask TOM
Differences Between Processes, Sessions And Connections
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:5671284058977

2)Oracle 9i & 10g编程艺术数据库体系结构 之 连接与会话

http://book.csdn.net/bookfiles/82/100827111.shtml
连接并不是会话的同义词,发现这一点时很多人都很诧异。在大多数人眼里,它们都是一样的,但事实上并不一定如此。在一条连接上可以建立0个、一个或多个会话。各个会话是单独而且独立的,即使它们共享同一条数据库物理连接也是如此。一个会话中的提交不会影响该连接上的任何其他会话。实际上,一条连接上的各个会话可以使用不同的用户身份!

在Oracle中,连接只是客户进程和数据库实例之间的一条特殊线路,最常见的就是网络连接。这条连接可能连接到一个专用服务器进程,也可能连接到调度器。如前所述,连接上可以有0个或多个会话,这说明可以有连接而无相应的会话。另外,一个会话可以有连接也可以没有连接。使用高级Oracle Net特性(如连接池)时,客户可以删除一条物理连接,而会话依然保留(但是会话会空闲)。客户在这个会话上执行某个操作时,它会重新建立物理连接。

2007-10-29补充:
OCI编程中提到有单会话模式和一个连接上多个会话的模式。后者需要先用OCIServerAttach() 创建连接,然后用OCISessionBegin()创建会话。这也印证了“一条连接上的各个会话可以使用不同的用户身份”。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9844649/viewspace-580018/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-08-18

  • 博文量
    235
  • 访问量
    183878