[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