自己写的存储过程,跑得很慢,正一个小时。在旧库跑就几分钟,难道因为新库数据量巨大,需要跑得更久了?!执行过程中使用一下语句查看是否锁住:
SELECT A.sid,
b.serial#,
Decode(A.TYPE, 'MR', 'Media Recovery',
'RT', 'Redo Thread',
'UN', 'User Name',
'TX', 'Transaction',
'TM', 'DML',
'UL', 'PL/SQL User Lock',
'DX', 'Distributed Xaction',
'CF', 'Control File',
'IS', 'Instance State',
'FS', 'File Set',
'IR', 'Instance Recovery',
'ST', 'Disk Space Transaction',
'TS', 'Temp Segment',
'IV', 'Library Cache Invalida-tion',
'LS', 'Log Start or Switch',
'RW', 'Row Wait',
'SQ', 'Sequence Number',
'TE', 'Extend Table',
'TT', 'Temp Table',
'Unknown') LockType,
c.object_name,
b.username,
b.osuser,
Decode(a.lmode, 0, 'None',
1, 'Null',
2, 'Row-S',
3, 'Row-X',
4, 'Share',
5, 'S/Row-X',
6, 'Exclusive',
'Unknown') LockMode,
B.machine,
D.spid
FROM v$lock a,
v$session b,
all_objects c,
v$process D
WHERE a.sid = b.sid
AND a.TYPE IN ( 'TM', 'TX' )
AND c.object_id = a.id1
AND B.paddr = D.addr ;
原因是我的PL有对最后一表 WAREHOUSE_.... 进行插入,其表与其他三张表有外键关联!于是出现 DML lock,对关联表的相关row进行删除锁定了。