锁产生的原因:如果有两个会话,每个会话都持有另一个会话想要的资源,此时就会发生死锁。
同一张表不同SESSION持有不同记录
SQL> create table t1(id int);
Table created.
SQL> create table t2(id int);
Table created.
SQL> select * from t1;
ID
----------
1
2
SQL> select * from t2;
ID
----------
2
1
开始测试:
SESSION 1:
SQL> select * from v$mystat where rownum<2;
SID STATISTIC# VALUE
---------- ---------- ----------
48 0 0
SESSION 2:
SQL> select * from v$mystat where rownum<2;
SID STATISTIC# VALUE
---------- ---------- ----------
38 0 0
SQL> select * from v$lock where sid in (48,38) and type in ('TM','TX');
no rows selected
SESSION 1:
SQL> update t1 set id=3 where id=1;
1 row updated.
SESSION 2:
SQL> update t1 set id=4 where id=2;
1 row updated.
查看此时行锁情况:
SQL> select * from v$lock where sid in (48,38
同一张表不同SESSION相互持有对方记录引发的死锁
最新推荐文章于 2020-08-19 01:01:54 发布