无法串行访问事务错误:ORA-08177: can't serialize access for this transaction
2011-02-18 21:32
746 查看
当事务隔离级别为serializable,两个事务并发修改同一个对象,当前一个事务提交或回滚时,第二个事务会收到该错误。
测试使用表,此表用于生成唯一主键:
test@ORCL> create table id_table
2 (id_name varchar2(30) primary key,
3 id_value number);
Table created.
test@ORCL>insert into id_table values('MY_KEY',0);
1 row created.
test@ORCL>commit;
Commit complete.
会话一事务隔离级别serializable,修改id_table表中MY_KEY值加1,但不提交
test@ORCL>set transaction isolation level serializable;
Transaction set.
会话二事务隔离级别serializable,修改id_table表中MY_KEY值加1,但不提交
test@ORCL>set transaction isolation level serializable;
Transaction set.
test@ORCL>update id_table set id_value = id_value + 1 where id_name ='MY_KEY';
此时修改会被阻塞
会话一提交修改的数据,会话二会收到如下信息
test@ORCL>update id_table set id_value = id_value + 1 where id_name = 'MY_KEY';
update id_table set id_value = id_value + 1 where id_name = 'MY_KEY'
*
ERROR at line 1:
ORA-08177: can't serialize access for this transaction
测试使用表,此表用于生成唯一主键:
test@ORCL> create table id_table
2 (id_name varchar2(30) primary key,
3 id_value number);
Table created.
test@ORCL>insert into id_table values('MY_KEY',0);
1 row created.
test@ORCL>commit;
Commit complete.
会话一事务隔离级别serializable,修改id_table表中MY_KEY值加1,但不提交
test@ORCL>set transaction isolation level serializable;
Transaction set.
会话二事务隔离级别serializable,修改id_table表中MY_KEY值加1,但不提交
test@ORCL>set transaction isolation level serializable;
Transaction set.
test@ORCL>update id_table set id_value = id_value + 1 where id_name ='MY_KEY';
此时修改会被阻塞
会话一提交修改的数据,会话二会收到如下信息
test@ORCL>update id_table set id_value = id_value + 1 where id_name = 'MY_KEY';
update id_table set id_value = id_value + 1 where id_name = 'MY_KEY'
*
ERROR at line 1:
ORA-08177: can't serialize access for this transaction
相关文章推荐
- ORA-08177: 无法连续访问此事务处理
- ORA-08177: 无法连续访问此事务处理 (转载)
- 问题:Unique约束与ORA-08177: 无法连续访问此事务处理
- ORA-08177: 无法连续访问此事务处理
- 查找ORACLE出现“ORA-08177:无法连续访问此事务处理”问题的原因
- [解决异常] spring batch 报错 ORA-08177: 无法连续访问此事务处理
- 无法创建链接服务器 "ORCL" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的实例 (错误:7302)
- 无法创建链接服务器 "xxx" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的实例。 (Microsoft SQL Server,错误: 7302)
- ora-12705:无法访问NLS数据文件,或者指定的环境无效
- 服务器IIS无法提供某种扩展名的文件的下载或访问某种类型文件提示http 404 错误时的解决办法
- 配置错误,访问被拒绝,无法加载程序集的原因和解决办法
- mac下无法访问本地项目的错误分析
- discuz 微社区 您请求的XXXX无法访问 接口错误(ERR02)
- 错误: 无法将文件“obj\Debug\Web.dll”复制到“bin\Web.dll”。对路径“bin\Web.dll”的访问被拒绝
- 使用javah生成.h文件出现无法访问的错误
- 微信h5支付接口开发,出现错误‘商家参数格式有误,请联系商家解决’,访问无法mweb_url
- 无法连接到http://XXX/arcgis/services 错误拒绝访问:计算机som服务为启动或som权限
- oracle drop用户cascade 无法顺利删除问题处理-ORA-00604和ORA-00942错误
- ORA-00604: 递归 SQL 级别 1 出现错误 ORA-38301: 无法对回收站中的对象执行 DDL/DML
- C#关于"该进程无法访问文件,因为该文件正由另一进程使用"的错误的一点心得(示例)