锁lock

锁是ORACLE防止用户同一时间并发访问修改资源,ORACLE使用不同类型的锁控制对数据的并发访问
防止用户之间出现破坏性的交互操作,ORACLE为处理事务自动锁定资源

ORACLE锁分类:
    按加锁方式分:
    自动锁
        ORACLE自动加的
    显示锁
        用户显示手工去加的
        
        如:lock table table_name in mode;


    按锁的级别:
    共享锁

    排它锁
       

    按针对的操作分类:
    DML锁
   
    DDL锁

    内部闩锁(latch)


DML锁
    DML锁根据锁的范围大小分为行锁(TX)和表锁(TM)
 
    行锁的类型主要有:独占锁和无锁

    表锁类型
      锁代码      锁模式        备注
    0         none        无锁,如select
        1         null        不锁资源,但是表被drop、alter 等后,要通知一些对象
                  如执行计划、解析的游标等
   
    2         Row-S       行共享锁(却是一个表锁),带有DML企图的锁
                  如:select ... for update
                                  lock table ... in row share mode

    3      ROW-X          行独占锁(表锁)如DML产生的锁
   
    4      share       共享锁(共享、只读)不允许对表进行DML
                  lock talbe ... in share mode;
   
    5         S/Row-X     共享行排他锁,也是只读锁,不允许对表进行进DML
                  与4号锁的区别,5号锁是串行执行

    6         Exclusive   排它锁

       
锁的释放:
    rollback 或  commit


查看锁
    v$locked_object
    v$lock

     select sid,type,lmode,request,ctime,block from v$lock where TYPE IN ('TM','TX')
      and sid in (16,137)

       SID TY      LMODE    REQUEST      CTIME      BLOCK
      ----- -- ---------- ---------- ---------- ----------
       137 TX          0          6        351          0
       137 TM          3          0        351          0
        16 TM          3          0        483          0
        16 TX          6          0        483          1


    SYS> select session_id,ORACLE_USERNAME,OBJECT_ID from v$locked_object;

    SESSION_ID ORACLE_USERNAME                 OBJECT_ID
    ---------- ------------------------------ ----------
            16 SYS                                 74925
           137 SYS                                 74925

死锁
    互相持有对方的资源,都希望对方释放
    session1> update scott.emp set sal=1500 where empno=7369;
    session2> update scott.emp set sal=2500 where empno=7521;

    session1> update scott.emp set sal=2000 where empno=7521;
    session2> update scott.emp set sal=1800 where empno=7369;


 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21175589/viewspace-755799/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21175589/viewspace-755799/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值