Oralce 锁机制

[b]Oracle DML 锁类型[/b]
1. exclusive 排它锁:阻止其它会话加排它锁和共享锁.
2. share 共享锁:阻止其它会话加排它锁.


[b]DML锁分为表级与行级[/b]
表级锁包括:
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:
表级排它锁的会话能阻止其它会话持有排它锁和共享锁.

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

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

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


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


[b]设置隔离级别:[/b]

设置事务的隔离级别
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;

[b]查询死锁:[/b]

-- 查询死锁
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值