lock ---1
来源:互联网 发布:如何评价北京折叠 知乎 编辑:程序博客网 时间:2024/06/07 03:50
锁概念基础
Oracle数据库的锁类型
一、悲观封锁
锁在用户修改之前就发挥作用:
Select ..for update(nowait)
Select * from tab1 for update
1:对返回结果集进行update或delete操作会发生阻塞。
2:对该表进行ddl操作将会报:Ora-00054:resource busy and acquire with nowaitspecified.
原因分析
阻塞
定义:
INSERT
UPDATE
DELETE
SELECT…FOR UPDATE
INSERT
UPDATE 和DELETE
Select …for update
死锁-deadlock
1:用户1对A表进行Update,没有提交。
2:用户2对B表进行Update,没有提交。
3:如果用户2此时对A表作update则会发生阻塞,需要等到用户1的事务结束。
4:如果此时用户1又对B表作update,则产生死锁。此时Oracle会选择其中一个用户进行会滚,使另一个用户继续执行操作。
起因:
锁
模式
锁描述解释SQL操作0none 1NULL空Select2SS(Row-S)行级共享锁,其他对象只能查询这些数据行Select for update、Lock forupdate、Lock row share
3SX(Row-X)行级排它锁,在提交前不允许做DML操作Insert、Update、Delete、Lock rowshare
4S(Share)共享锁Create index、Lockshare5SSX(S/Row-X)共享行级排它锁Lock share rowexclusive6X(Exclusive)排它锁Alter table、Drop able、Dropindex、Truncate table 、Lock exclusive
1.
Column
Datatype
Description
ADDR
RAW(4 |8)
Address of lock stateobject
KADDR
RAW(4 |8)
Address oflock
SID
NUMBER
Identifier for sessionholding or acquiring the lock
TYPE
VARCHAR2(2)
Type of user or systemlock
The locks on the user types are obtained by userapplications. Any process that is blocking others is likely to beholding one of these locks. The user type locks are:
TM - DML enqueue
TX - Transaction enqueue
UL - User supplied
--
--UL
--
ID1
NUMBER
Lock identifier #1 (depends ontype)
ID2
NUMBER
Lock identifier #2 (depends ontype)
---
---
--
LMODE
NUMBER
Lock mode in which the session holds thelock:
- 0 -none
- 1 - null(NULL)
- 2 - row-S(SS)
- 3 - row-X(SX)
- 4 - share(S)
- 5 - S/Row-X(SSX)
- 6 - exclusive(X)
--大于0时表示
--
REQUEST
NUMBER
Lock mode in which the process requests thelock:
- 0 -none
- 1 - null(NULL)
- 2 - row-S(SS)
- 3 - row-X(SX)
- 4 - share(S)
- 5 - S/Row-X(SSX)
- 6 - exclusive(X)
--
CTIME
NUMBER
Time since current mode wasgranted
BLOCK
NUMBER
The lock is blocking anotherlock
0, 'NotBlocking',
1, 'Blocking',
2, 'Global',
-
2.其它相关视图说明
视图名描述主要字段说明v$session查询会话的信息和锁的信息。
sid,serial#:表示会话信息。
program:表示会话的应用程序信息。
row_wait_obj#:表示等待的对象,和dba_objects中的object_id相对应。
lockwait:该会话等待的锁的地址,与v$lock的kaddr对应.v$session_wait查询等待的会话信息。sid:表示持有锁的会话信息。
Seconds_in_wait:表示等待持续的时间信息
Event:表示会话等待的事件,锁等于enqueue
dba_locks对v$lock的格式化视图。Session_id:和v$lock中的Sid对应。
Lock_type:和v$lock中的type对应。
Lock_ID1:和v$lock中的ID1对应。
Mode_held,mode_requested:和v$lock中
的lmode,request相对应。
v$locked_object只包含DML的锁信息,包括回滚段和会话信息。Xidusn,xidslot,xidsqn:表示回滚段信息。和
v$transaction相关联。
Object_id:表示被锁对象标识。
Session_id:表示持有锁的会话信息。
Locked_mode:表示会话等待的锁模式的信
息,和v$lock中的lmode一致。
select * from v$lock;
select * from v$lock where block=1;
2.查询被锁的对象
select * from v$locked_object;
3.查询阻塞
查被阻塞的会话
select * from v$lock where lmode=0 and type in ('TM','TX');
查阻塞别的会话锁
select * from v$lock where lmode>0 and type in('TM','TX');
4.查询数据库正在等待锁的进程
select * from v$session where lockwait is not null;
5.查询会话之间锁等待的关系
select
where
select * from v$session_wait where event='enqueue';
- LOCK(1)-TX LOCK
- lock ---1
- 同步线程1(lock)
- LOCK
- LOCK
- lock
- lock
- Lock
- Lock()
- lock
- LOCK
- Lock
- Lock
- Lock
- lock
- lock
- Lock
- Lock
- 筛选出一些个人常用的快捷键
- windowns的ip安全策略
- Linux常用命令(26)之yum在线安装
- Oracle 11g 使用TDE及ORA-28362
- 设计模式学习笔记——抽象工厂(Abstract Factory)模式
- lock ---1
- 总结阻塞和非阻塞,同步和异步
- android studio jni ndk 例子
- markdown编辑器
- maven-resources-plugin修改了我的证书
- tomcat配置JNDI数据源
- 倒排索引 基础知识
- 招标、投标、竞标、中标的概念整理
- java NIO总结