SQL> select object_name from dba_objects where object_id in (89012,89065,89050);
OBJECT_NAME
--------------------------------------------------------------------------------------------------------------------------------
TEXT_T1 2号TM锁指向TEXT_T1;
SYS_JOURNAL_89050 4号TM锁指向临时对象SYS_JOURNAL_89050,执行结束前释放锁和删除对象
IND_TEXT02 6号OD锁指向rebuild索引IND_TEXT02
Session 1
SQL> alter session set events '10704 trace name context off';
Linux
[oracle@localhost trace]$ more orcl_ora_43002.trc
TM-00015bb4-00000000 mode=2 指向TEXT_T1 开头持有结尾释放。持有2号TM锁,不阻塞DML操作
TM-00000012-00000000 mode=3 指向OBJ$ 持有再释放 重复三次
TM-0000001c-00000000 mode=3 指向CON$ 持有再释放 重复两次
TM-00015be5-00000000 mode=4 指向SYS_JOURNAL_89050 持有再释放 重复两次
TM-0000000e-00000000 mode=3 指向SEG$ 持有再释放 重复十一次
TM-00000014-00000000 mode=3 指向ICOL$ 持有再释放 重复两次
TM-00000013-00000000 mode=3 指向IND$ 持有再释放 重复四次
TM-00000004-00000000 mode=3 指向TAB$ 末尾持有再释放 重复两次
TM-00000015-00000000 mode=3 指向COL$ 持有再释放 重复两次
TM-00000020-00000000 mode=3 指向CCOL$ 持有再释放 重复三次
TM-0000001f-00000000 mode=3 指向CDEF$ 持有再释放 重复四次
TM-000001c7-00000000 mode=3 指向IND_STATS$ 持有再释放 重复三次
TM-00000092-00000000 mode=3 指向IND_ONLINE$ 持有再释放 重复三次
TM-000000b4-00000000 mode=3 指向INDREBUILD$ 持有再释放 重复三次
TM-000001eb-00000000 mode=3 指向WRI$_OPTSTAT_IND_HISTORY
TM-000137d9-00000000 mode=3 指向SDO_GEOR_DDL__TABLE$$ 持有再释放 重复两次
TM-000000db-00000000 mode=3 指向OBJECT_USAGE
TM-000001c9-00000000 mode=3 指向CACHE_STATS_1$
TM-00000089-00000000 mode=3 指向COM$
TM-000001c0-00000000 mode=3 指向HIST_HEAD$
TM-000000b6-00000000 mode=3 指向COMPRESSION$
TM-00000282-00000000 mode=3 指向SUMDELTA$
TM-0000027f-00000000 mode=3 指向SUMPARTLOG$
TM-00000286-00000000 mode=3 指向SNAP_LOADERTIME$
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-000000f2-00000000 mode=3 指向NCOMP_DLL$
TM-0000003d-00000000 mode=3 指向OBJAUTH$
TM-00000072-00000000 mode=3 指向ICOLDEP$
TM-00000097-00000000 mode=3 指向JIJOIN$
TM-0000009b-00000000 mode=3 指向JIREFRESHSQL$
TM-0000007b-00000000 mode=3 指向ECOL$
TM-00000053-00000000 mode=3 指向COLTYPE$
TM-00000056-00000000 mode=3 指向SUBCOLTYPE$
TM-00000058-00000000 mode=3 指向NTAB$
TM-00000050-00000000 mode=3 指向LOB$
TM-0000005c-00000000 mode=3 指向REFCON$
TM-0000005f-00000000 mode=3 指向OPQTYPE$
Alter index rebuild online会在TEXT_T1表持有2号TM锁,重建索引完成时释放,期间不会堵塞DML操作,也保证了表的并发性能;
执行中会创建一个SYS_JOURNAL_XXXXX系统临时日志表,用来存放index rebuild 过程中索引变化的记录日志,持有4号TM锁,在TEXT_T1的2号TM锁释放之前进行释放。
TX锁的记录以及加到哪个对象上(按时间先后):
OBJ$:
TX-0005000c-00000a21 mode=6
TX-00050014-00000a22 mode=6
TX-0005000c-00000a21 mode=6
TX-00050014-00000a22 mode=6
CON$:
TX-00050021-00000a21 mode=6
SYS_JOURNAL_89050:
TX-0005001f-00000a1c mode=6
TX-00050004-000008dc mode=6
ICOL$:
TX-00050012-00000a1b mode=6
TX-00050017-00000a21 mode=6
CCOL$:
TX-00050006-00000a21 mode=6
TX-00050016-00000a1c mode=6
SYS_JOURNAL_89050:
TX-00020014-000005fe mode=6
TX-00020009-00000607 mode=6