关于会话和事务并发串读某些实验

这里主要是纪录关于丢失插入的实验:

过程:

A会话,启动串读事务

会话B,启动串读事务,插入,并COMMIT;

A会话 ,update,报错与否。

如下:

sessionA> set transaction isolation level serializable;

事务处理集。

----

加上select

select * from t;

COL1
------
-1
1
2
3

---

sessionB> set transaction isolation level serializable;

事务处理集。

sessionB> insert into t values (-100);

已创建 1 行。

sessionB> commit;

提交完成。

sessionA> update t set col1=col1+1;
update t set col1=col1+1
*
第 1 行出现错误:
ORA-08177: 无法连续访问此事务处理
sessionA> update t set col1=col1+1 where col1<>-100;
update t set col1=col1+1 where col1<>-100
*
第 1 行出现错误:
ORA-08177: 无法连续访问此事务处理

第一处出现08177正确,只是第二处出现就不合理了。。。原因可能是回滚段判断SCN后就没有再比较col1<>-100这个条件。

另一缺点:

所有实验都在CMD下做,当第一次登陆进去的时候,

A 启动后,在A update之前必须有一次select ...才能保证update t=t+1;报错(第一次没这个操作update将成功),报错之后的实验可以不用select 都可以报错,另

where t<>-1,终不能成功。

[@more@]

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

转载于:http://blog.itpub.net/118400/viewspace-1024209/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值