六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 55|回复: 0

Oralce 锁机制

[复制链接]

升级  4.67%

60

主题

60

主题

60

主题

举人

Rank: 3Rank: 3

积分
214
 楼主| 发表于 2013-1-15 02:12:43 | 显示全部楼层 |阅读模式
Oracle DML 锁类型
1. exclusive 排它锁:阻止其它会话加排它锁和共享锁.
2. share 共享锁:阻止其它会话加排它锁.


DML锁分为表级与行级
表级锁包括:
lock table t1 in exclusive mode; // 6
lock table t1 in share mode; // 4

行级锁包括:
lock table t1 in row share mode; //2 行级共享锁(共享更新锁)
lock table t1 in row exclusive mode; //3 行级排它锁

对于2:
行级共享锁的会话能阻止其它会话已被共享锁锁定的行数持有排它锁.

对于3:
行级排它锁的会话能更新锁定的行数,其它会话更新会被挂起.

对于4:
表级共享锁的会话能阻止其它会话持有排它锁.

对于6:
表级排它锁的会话能阻止其它会话持有排它锁和共享锁.

ORACLE 事务隔离级别:
   隔离级别定义了事务与事务之间的隔离程度.隔离级别与并发性是互为矛盾的:隔离程度越高,数据库的并发性越差;隔离程度越低,数据库的并发性越好。
1) read committed
这是ORACLE缺省的事务隔离级别.

2) serializable
允许在本事务中进行DML操作.

3) read-only
不允许在本事务中进行DML操作.


          脏读  不可重复读  幻读
read committed  不可能   可能   可能
serializable    不可能   不可能   不可能


设置隔离级别:

设置事务的隔离级别
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET TRANSACTION READ ONLY;

设置会话的隔离级别
ALTER SESSION SET ISOLATION_LEVEL SERIALIZABLE;
ALTER SESSION SET ISOLATION_LEVEL READ COMMITTED;

查询死锁:
-- 查询死锁SELECT S.USERNAME,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;SELECt * FROM v$locked_object WHERE SESSION_ID = '14'; --SESSION_ID-- 查询会话详细信息SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='11'; --SID-- 结束会话ALTER SYSTEM KILL SESSION '11, 21'; --SID, SERIAL#-- 查询进程ID,Oracle 每个会话都会有一个进程对应SELECT SPID FROM V$PROCESS WHERE ADDR='2F0830DC'; --PADDR-- 结束进程KILL -9 2964 --SPID
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表