oracle锁机制(上)

来源:互联网 发布:淘宝装饰店铺教程 编辑:程序博客网 时间:2024/05/29 13:28
oracle锁机制(上)
目录:
锁机制
锁定冲突
解决锁定冲突
死锁
详述:
1.锁机制
• 锁(lock)
– 可防止多个会话同时更改同一数据
– 自动在指定语句尽可能低的级别获取
– 不会升级

• Locking机制
– 高级数据并发处理:
执行插入、更新和删除时使用行级锁定
查询不需要任何锁
– 自动队列管理
– 在事务处理结束(进行 COMMIT 或 ROLLBACK 操作)之前一直持有锁
• 数据并发处理

• DML锁
– 每个 DML 事务处理必须获取两类锁定:
针对正在更新的一行或者多行的 EXCLUSIVE 行锁定[TX]
针对包含这些行的表 【 Table lock (TM)】 的 【 ROW EXCLUSIVE (RX)】 表级锁定

• 入队机制
– 入队机制用于跟踪:
等待锁的会话
请求的锁定模式
请求锁的会话的顺序

2.锁定冲突
• 发生锁定冲突

• 锁定冲突的可能原因
– 未提交更改
– 长时间运行事务处理
– 不必要的高锁定级别

3.解决锁定冲突
• 检测锁定冲突的诊断工具
– T1:update employees set salary=salary x 1.1;
– T2: update employees set salary=salary x 1.1 where empno=1000;
– T3: update employees set salary=salary x 1.1 where empno=2000;
– 以下动态性能视图可以提供锁定冲突的相关信息
V$LOCK
V$LOCKED_OBJECT
DBA_WAITERS
DBA_BLOCKERS
• 检测锁定冲突
– 在“ Performance(性能)”页上选择"Blocking Sessions(阻塞会话)"。
– 单击"Session ID(会话ID)"链接,查看关于锁定会话的信息,包括实际SQL语句.
– 为了解决锁定冲突,您应该:
提交或者回退持有锁的会话
终止持有锁的会话(在紧急情况下)
• 使用SQL解决锁定冲突
– 可以使用 SQL 语句来确定阻塞会话并终止会话.

4.死锁
• 死锁的产生


0 0
原创粉丝点击