Oracle 性能调优学习笔记(十七)--- 监控和探测锁机制

监控和探测锁机制
            Oracle锁机制特点
       自动管理
    高级别的数据并发性
     DML事物需要行级别的锁
     查询不需要锁
    排他和共享锁模式
       排他锁:修改资源的时候,排他锁释放之前,其他用户不能操作.
       共享锁:当多个用户读取数据的时候,数据添加共享锁,防止排它锁的使用.
    锁直到提交和回滚之前一致被锁住
    
   主要的两种类型 
    DML或者数据锁(TM):
     表级别的锁(共享锁):SELECT .... FOR UPDATE
     行级别的锁(排他锁):INSERT,UPDATE,DELETE
    DDL或者字典锁(TX)
    
    相关的视图:
      v$session
      v$transaction
      v$lock:
         type:TM,TX,UL
      lmode:锁类型.
      select sid,type,id1,id2,lmode,request from v$lock;
        request:不等于0表示,处于等待状态.
      select object_id,object_name,object_type
         from dba_objects where object_id=?
       select sid,type,trunc(id1/power(2,16)) rbs,
          bitand(id1,to_number('ffff','xxxx'))+0 slot,id2 req,request
      from v$lock
      where sid=?
      v$mystat:
     
     
      lock table table_name in share mode;
     
      SRS模式
      lock table table_name in row share mode;
     
      lock table table_name in row exclusive mode;
     
      lock table table_name in exclusive mode;
     
   DDL锁
      排他DDL锁:
        Drop  table语句
     alter table语句
     (DDL完成锁释放)
      共享DDL锁:
                  create procedure语句
                  audit语句     
         (当DDL 解析完毕,锁释放)
      breakable 解析锁:共享内存中已经解析的SQL使用的时候使用.
   
   建议:在开发时候,不要手动改变锁的行为,及时提交事物的信息.
   
   诊断工具
     v$lock
     v$locked_object
     dba_waiters
     dba_blockers
   kill会话的方式
        select sid,serial# from v$session;

你可能感兴趣的:(oracle)