壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1380|回复: 0

oracle中connection与session的问题

[复制链接]
发表于 2009/12/28 14:49:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
在网上搜索了下oracle中关于session和connection的问题,好像大家说法都不一样,实在是不明白connection和session间的关系(或区别)?

  网上的第一种观点:
  connection其实就是通信链路,对oracle讲就是user process和instance间的通信链路,可以使用IPC或者TCP之类的网络机制。
  session则是一个数据库用户在userprocess和instance之间所建立的一个具体链接.session存在的前提是建立了连接。建立了链接的同时,session已经存在了。当user信息错误时,userprocess向instance发送链接请求,instance验证user信息,发现user信息错误,返回错误信息。这个过程只是两者的通信,试图建链,还根本没建立成功,这时候既不存在connection也不存在session。从网络模型上理解二者之间的关系,应该会比较容易点。似乎建立了链接的同时,session也跟着出现了。
   举个例子,打电话。但我们想和对方通话的时候,我们首先要拨号,当对方按下接听键时,双方直接就建立一条通信链路,这时双方就可以谈话了,session其实就是指从会话准备就绪开始到会话结束,会话结束了就要断开链路。
  session可以有active和inactive的状态,当按下接听键时,链路建立了,当我们说hello时,会话开始了,当我们交谈时是active的,当我们沉默时是inactive的,当我们说bye的时候,会话结束了,当我们挂机的时候,链路断了。
所以到底是现有session还是先有connection的问题也就清楚了,其实他们是同时的,只是对同一事件同一现象同一事务在不同层次上的描述,从底层通信看,是叫connection,从上层userprocess和instance看,是两者的session已经开始了。当我们敲exit时,会话中断,底层拆链。
  如果非要分个先后的话,那session是要放在connection之间的。


  第二中观点:connection和session差不多是同一个东西

  我的疑问?
  第一:上面的红色显示的instance指的是什么?
  第二:session与connection之间到底是什么关系,是不是上面打电话那个例子说的那样,如果不是,那又会怎样?
  第三:一个连接可以拥有多个会话(session)也可以没有会话,同一个连接上的不同会话之间不会相互影响。一个连接是如何拥有多个会话的呢?是不是con.createStatement()就建立一个session,这个statement.close()后这个session就关闭,这样理解对吗?
  第四:如果第三条正确的话,con.createStatement() 建立一个session,然后对同一个con再createStatement() 又建立一个session,那第一个session会不会受影响呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 07:57 , Processed in 0.012375 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表