查看Oracle PL 锁一例

来源:互联网 发布:南联盟大使馆被炸 知乎 编辑:程序博客网 时间:2024/05/17 04:54

自己写的存储过程,跑得很慢,正一个小时。在旧库跑就几分钟,难道因为新库数据量巨大,需要跑得更久了?!执行过程中使用一下语句查看是否锁住:

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进行删除锁定了。