Oracle链接、会话、事务的关系
2016-12-08 08:44
218 查看
Oracle链接、会话、事务的关系
一、会话:在一个CONNECTION上可以建立0个、一个或多个SESSION。各个会话是单独而且独立的即使它们共享同一个数据库连接CONNECTION连接并不是会话的同义词。一个连接可能有零个、一个或多个建立在其上的会话。每个会话是分开且独立的,即使他们共享一个同样的物理连接到数据库。
会话中的某个提交并不影响在该连接上的任何其他会话。事实上,使用该连接的每个会话可以使用不同用户身份。
二、事务,指的是你在当前SESSION中要做的一件事情(一个会话可以启动多个事务),可以跨链接,甚至跨数据库实例
1.一个会话可以有连接也可以没有连接。使用高级Oracle Net特性(如连接池)时,客户可以删除一条物理连接,
而会话依然保留(但是会话会空闲)。客户在这个会话上执行某个操作时,它会重新建立物理连接。
2.只有有会话才可能有窗口操作,会话是用户指令执行的载体:用于执行SQL、提交事务并运行服务器中存储过程等。
当系统没有运行在共享服务模式下时,Oracle 为每个用户会话创建一个服务进程(server process)。
而当系统运行在共享服务模式下时,多个用户会话可以共享同一个服务进程。
在SQL*Plus中打开autotrace后,当执行DML操作(insert、update、delete、select和merge)时,SQL*Plus将完成下列操作。
1)如果第二个会话不存在,则使用当前连接创建一个新的会话。
2)SQL*Plus要求产生的新会话查询v$sesstat视图,为运行DML的会话记录初始统计数据。
3)在第一个会话中运行DML操作。
4)在完成DML语句后,SQL*Plus 将要求其他会话再次查询V$sesstat并产生显示执行DML会话在统计数据上的差异报告。
如果关闭autotrace,SQL*Plus将终止第二个会话并不再监视v$session视图。
------------------------------------------------------------------------------------------------------------------------------------
Oracle 行锁:
insert、update、delete操作默认加行级锁,其原理和操作与select for update并无两样。
select for update of,这个of子句在牵连到多个表时,具有较大作用,如不使用of指定锁定的表的列,则所有表的相关行均被锁定,若在of中指定了需修改的列,则只有与这些列相关的表的行才会被锁定。
相关文章推荐
- oracle 进程 会话,游标,事务的关系
- 数据库中事务、会话、线程这几个概念是什么关系
- Oracle中会话与事务有什么区别?
- oracle中会话与事务有什么区别?
- Oracle中事务锁(锁住的表、锁住的会话)
- 讨论oracle 11g 会话 连接 与服务进程之间的关系
- 事务、会话与线程的关系和区别
- SQLServer出现 '其他会话正在使用事务的上下文' 的问题原因,什么是环回链接服务器?(转载)
- oracle 检查点,scn,事务关系
- ORACLE DML LOCK时找出对应SESSION正在执行的SQL语句(ORA-12841,无法变更事务处理中的会话并行 DML 状态)
- Oracle中会话与事务有什么区别?
- 主键/约束/事务/表关系 Oracle
- Oracle基于会话和基于事务的临时表测试例子
- oracle链接SQLSERVER,事务语句的提交
- oracle中的会话与事务的区别
- 据库中事务、会话、线程这几个概念是什么关系
- 在VB.NET使用OracleTransaction 处理事务
- 转:Oracle EBS借贷关系
- [导入][链接]一篇关于Oracle和Eclipse合作本质的探讨
- Oracle 10g更改会话整数溢出漏洞