查看Oracle PL 锁一例

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值