oralce的锁

本文介绍了Oracle数据库中的三种主要锁:TX锁、TM锁和DDL锁,并详细解释了这些锁的作用和如何通过SQL脚本查看系统中的锁。此外,还提供了一个DDL过程的伪代码示例,说明了DDL操作如何与事务交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oracle的锁主要有TX锁、TM锁、DDL锁。

TX锁是事务锁,对数据的修改都会产生一个事务锁,同时在修改数据的过程中,为了防止修改表结构,oracle会产生一个TM锁。
可以用一下的脚本查看系统中的锁
SQL> select username,l.SID,id1,id2,l.LMODE,request,block,l.TYPE
  2  from v$lock l, v$session s where l.SID = s.SID and s.USERNAME= USER
  3  ;
 
USERNAME                              SID        ID1        ID2      LMODE    REQUEST      BLOCK TYPE
------------------------------ ---------- ---------- ---------- ---------- ---------- ---------- ----
NCSRPT                                 10      30508          0          3          0          0 TM
NCSRPT                                 10     262190        524          6          0          0 TX

DDL过程的伪代码如下:
Begin
     Commit;
    DDL_Statement;
    Commit;
Exception
    When others then rollback;
End;

从上面的伪代码可以知道,DDL会先提交事务。所以一般来说在PL/SQL中写DDL语句需要考虑这种情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值