Oracle TX锁(事务锁)

Oracle TX锁,也称为事务锁,确保每个事务只有一个。在事务中,对数据的修改或select for update操作会指向此锁。如果一个事务尝试修改已被其他事务锁定的记录,它将等待,相关信息可在v$lock中查看。通过一个实验(参照TOM书197页),展示了当一个事务被另一个事务锁阻塞时的情况,以及如何通过提交事务来解除阻塞并成功更新数据。
摘要由CSDN通过智能技术生成

也叫事务锁。每个事务只能有一个。
每个事务对应该一个TX锁,在该事务中修改或者select for update的每一行都会指向这个锁(数据块的结构中有相关的标志)。
如果一个事务想修改的某条记录已经被另一个事务锁住,那么这个事务会等待,如果再有事务会形成一个列表,等待的信息可以在v$lock里面查到。

做一个实验(在TOM书的197页)

准备实验数据:

SCOTT@ prod> create table emp2 as select * from emp ;

Table created.

SCOTT@ prod> create table dept2 as select * from dept ;

Table created.

SCOTT@ prod> alter table dept2 add primary key (deptno ) ;

Table altered.

SCOTT@ prod> alter table emp2 add primary key (empno  ) ;

Table altered.

SCOTT@ prod> alter table emp2 add foreign key ( deptno ) references dept2(deptno) ;

Table altered.

SCOTT@ prod> create index idx111 on emp2(deptno ) ;

Index created.
SESSION1:
SCOTT@ prod> update dept2 set dname = initcap(dname) ;

4 rows updated.

SESSION2:
SYS@ prod> select username , v$lock.sid , trunc(id1/power(2,16)) rbs , bitand(id1 , to_number('ffff' , 'xxxx' )) + 0  slot ,
  2  id2 seq , lmode , request
  3  from v$lock , v$session
  4  where v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值