日期:2014-05-16  浏览次数:20469 次

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;