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 行锁:

insertupdatedelete操作默认加行级锁,其原理和操作与select for update并无两样。 

select for update of,这个of子句在牵连到多个表时,具有较大作用,如不使用of指定锁定的表的列,则所有表的相关行均被锁定,若在of中指定了需修改的列,则只有与这些列相关的表的行才会被锁定。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值