acle 的锁从种类上分为2种 共享锁(share) ,排它锁(exclusive).
从锁定的内容上,可以分为三大类:
dml锁,ddl锁,内存锁(latch)
其中
dml 锁包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。
在对数据库的操作过程中,先会对表加上TM锁,然后对行加TX锁
(一)关于TM锁和TX锁
SQL> insert into test_lock select * from test_lock;
225556 rows created.
insert 以后,查看v$locked_object有现在哪些对象被锁定.
SQL> select * from v$locked_object;
XIDUSN XIDSLOT XIDSQN OBJECT_ID SESSION_ID ORACLE_USERNAME OS_USER_NAME PROCESS
---------- ---------- ---------- ---------- ---------- ------------------------------ ------------------------------ ------------
LOCKED_MODE
-----------
5 43 5401 82284 288 LIJIEBIN lijiebin 28817
3
我们根据该session的sid察看到了该session有TM锁和TX锁
SQL> select * from v$lock where sid=288;
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
---------------- ---------------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
0000000529D9A540 0000000529D9A568 288 TM 82284 0 3 0 165 2
0000000529DF8F20 0000000529DF8F58 288 TX 327723 5401 6 0 165 2
对象在加TX锁之前 会加上TM锁.
v$lock视图列出当前系统持有的或正在申请的所有锁的情况,其主要字段说明如下:
字段名称 | 类型 | 说明 |
SID | NUMBER | 会话(SESSION)标识; |
TYPE | VARCHAR(2) | 区分该锁保护对象的类型; |
ID1 | NUMBER | 锁标识1; |
ID2 | NUMBER | 锁标识2; |
LMODE | NUMBER | 锁模式:0(None),1(null),2(row share), 3(row exclusive),4 (share),5(share row exclusive),6(exclusive) |
REQUEST | NUMBER | 申请的锁模式:具体值同上面的LMODE |
CTIME | NUMBER | 已持有或等待锁的时间; |
BLOCK | NUMBER | 是否阻塞其它锁申请; |
其中在TYPE字段的取值:
TYPE | ID1 | ID2 |
TM | 被修改表的标识(object_id) | 0 |
TX | 以十进制数值表示该事务所占用的回滚段号与该事务在该回滚段的事务表(Transaction table)中所占用的槽号(slot number,可理解为记录号)。其组成形式为: 0xRRRRSSSS ( RRRR = RBS number, SSSS = slot )。 | 以十进制数值表示环绕(wrap)次数,即该槽(slot)被重用的次数; |
v$locked_object视图列出当前系统中哪些对象正被锁定,其主要字段说明如下:
字段名称 | 类型 | 说明 |
XIDUSN | NUMBER | 回滚段号; |
XIDSLOT | NUMBER | 槽号; |
XIDSQN | NUMBER | 序列号; |
OBJECT_ID | NUMBER | 被锁对象标识; |
SESSION_ID | NUMBER | 持有锁的会话(SESSION)标识; |
ORACLE_USERNAME | VARCHAR2(30) | 持有该锁的用户的Oracle用户名; |
OS_USER_NAME | VARCHAR2(15) | 持有该锁的用户的操作系统用户名; |
PROCESS | VARCHAR2(9) | 操作系统的进程号; |
LOCKED_MODE | NUMBER | 锁模式,取值同v$lock中的LMODE; |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8135069/viewspace-613396/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8135069/viewspace-613396/