[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
昨天遇到一例使用位图索引导致死锁的例子,记录一下。
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/
本文通过一个实例展示了在Oracle数据库中使用位图索引可能引发的死锁情况。测试环境中创建了一张包含位图索引的表,并在两个会话中进行并发插入操作,最终导致了死锁现象。
705

被折叠的 条评论
为什么被折叠?



