Oracle锁的模式和10704事件跟踪对比(11)

其他锁(系统锁)的记录:
CU-XXXXXXX-00000000 mode=6    Cursor bind 游标绑定锁 多个
OD-00015bda-00000000 mode=6    指向IND_TEXT02
TT-0000000e-00000010 mode=4    指向SEG$
TT-00000003-00000010 mode=4    指向I_OBJ#
DL-00015bb4-00000000 mode=3    指向TEXT_T1
DL-00015be9-00000000 mode=3    指向SYS_JOURNAL_89050临时对象
ZH-00015be9-00000001 mode=6    指向SYS_JOURNAL_89050临时对象
ZH-00015be9-00000002 mode=6    指向SYS_JOURNAL_89050临时对象
ZH-00015be9-00000003 mode=6    指向SYS_JOURNAL_89050临时对象
ZH-00015be9-00000004 mode=6    指向SYS_JOURNAL_89050临时对象
TS-0000000e-01c000ea mode=6    指向SEG$
TS-0000000e-01893e02 mode=6    指向SEG$
HW-0000000e-01c00082 mode=6    指向SEG$
RO-00010013-00000001 mode=6
RO-00010013-00000002 mode=6
CR-00010013-00000001 mode=6
CR-00010013-00000002 mode=6

关于不同索引语句产生的锁的总结:
offline create index /rebuild 和online create index /rebuild 的不同点
1.offline始终持有4号TM锁来锁定表,堵塞其他事务DML操作;online持有2号TM锁来锁定表,不会堵塞其他事务的DML操作,并发性能更好;
2.online会自动产生SYS_JOURNAL_XXXX的系统临时表来记录日志;
3.online时持有的3号TM锁相比offline时要复杂得多。

create index和alter index rebuild的不同点
1.create index/online是新建索引,当table上没有索引时,需要新建;
2.alter index rebuild/online是重建索引,当索引中删除更改的索引中的被删除项占总的项数的百分比
3.两者维护的数据字典表数量有一定的差异 


六、DROP/TRUNCATE/CREATE Table锁的跟踪分析
1.CREATE TABLE
create table test_t3 as select * from text;

TM-0000000e-00000000  mode=3  指向SEG$
TM-00000004-00000000  mode=3  指向TAB$
TM-00000015-00000000  mode=3  指向COL$

create table时被操作表本身不持有锁,只是锁了几个数据字典表去更新

2.DROP TABLE
insert into test_t1 select * from text;
drop table test_t1

TM-00015b62-00000000 mode=6  指向TEXT_T1  开始持有最后释放

TM-000137d9-00000000 mode=3    指向SDO_GEOR_DDL__TABLE$$
TM-00000282-00000000 mode=3    指向SUMDELTA$ 
TM-0000027f-00000000 mode=3    指向SUMPARTLOG$
TM-00000286-00000000 mode=3    指向SNAP_LOADERTIME$
TM-0000008e-00000000 mode=3    指向RECYCLEBIN$
TM-000000e1-00000000 mode=3    指向IDL_UB1$ 
TM-000000e2-00000000 mode=3    指向IDL_CHAR$
TM-000000e3-00000000 mode=3    指向IDL_UB2$
TM-000000e4-00000000 mode=3    指向IDL_SB4$
TM-000000e5-00000000 mode=3    指向ERROR$
TM-00000012-00000000 mode=3    指向OBJ$
TM-000137cf-00000000 mode=3    指向SDO_GEOR_SYSDATA_TABLE
TM-000139b3-00000000 mode=3    指向SDO_TIN_PC_SYSDATA_TABLE
TM-000139b1-00000000 mode=3    指向SDO_TIN_PC_SEQ 
TM-000137d9-00000000 mode=3    再次指向SDO_GEOR_DDL__TABLE$$
(以上TM锁全部释放后)
TM-00000012-00000000 mode=3    指向OBJ$ 
TM-0000000e-00000000 mode=3    指向SEG$

drop table持有6号TM排他锁,禁止其他事务执行任何DML语句。

2.TRUNCATE TABLE
truncate table test_t2

TM-00015b46-00000000  mode=6  指向TEST_T2 开始持有最后释放
TM-0000028a-00000000  mode=3  指向MLOG$
TM-000001e4-00000000  mode=3  指向MON_MODS$
TM-00000047-00000000  mode=3  指向SUPEROBJ$
TM-000001c5-00000000  mode=3  指向TAB_STATS$
TM-00000004-00000000  mode=3  指向TAB$ 
TM-0000000e-00000000  mode=3  指向SEG$
TM-00000012-00000000  mode=3  指向OBJ$
(以上TM锁全部释放后)
TM-0000000e-00000000  mode=3  指向SEG$ 

truncate table持有6号TM排他锁,禁止其他事务执行任何DML语句。

七、总结

锁模式   锁描述   解释   sql操作  
0   none           
1   null    预留模式,仅起标志作用      
2   Row-S 行共享(RS)   行级共享锁,其他对象只能查询这些数据行   Create index online,Alter index rebuild online  
3   Row-X 行专用(RX)   行级排他锁,在提交前不允许做DML操作   insert into table,update table,delete from xxx  
4   Share 共享锁(S)   共享锁   Create index,Alter index rebuild  
5   S/Row-X 共享行专用(SRX)   共享行级排他锁      
6   exclusive 专用(X)   排他锁   drop table,truncate tabledrop index  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/76374180f769292c951d105c76b85824.html