[20130729]位图索引与死锁.txt

本文通过一个实例展示了在Oracle数据库中使用位图索引可能引发的死锁情况。测试环境中创建了一张包含位图索引的表,并在两个会话中进行并发插入操作,最终导致了死锁现象。
[20130729]位图索引与死锁.txt

昨天遇到一例使用位图索引导致死锁的例子,记录一下。

1.建立测试环境:
SQL> @ver
BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production

SQL> create table t( flag varchar2(1));
Table created.

--打开两个会话,插入数据并提交。
--会话1:
insert into t values ('1');
insert into t values ('2');
commit ;

--会话2:
insert into t values ('1');
insert into t values ('2');
commit ;

--建立位图索引:
create bitmap index i_t_flag on t(flag);

2.开始测试:
--会话1,不提交:
insert into t values ('1');
--会话2,不提交:
insert into t values ('2');

--会话1,不提交:
insert into t values ('2');
--这时挂起,等待会话2提交。如果这时会话2执行如下:

--会话2,不提交:
insert into t values ('1');

--在会话1出现如下:
            *
ERROR at line 1:
ORA-00060: deadlock detected while waiting for resource

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

转载于:http://blog.itpub.net/267265/viewspace-767378/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值