在Oracle EBS日常运维中,有时遇到平时秒执行完成的程序几个小时无法执行完成, 由于表或行死锁导致;有时修改数据对象包一直无法编译;有时修改表某些字段类型、名称或长度无法版至生产环境
一、解锁表或行的死锁
SELECT DISTINCT 'Alter System Kill Session ''' || s.Sid || ',' || s.Serial# || '''immediate;'
FROM V$locked_Object l
,V$session s
,All_Objects o
WHERE l.Session_Id = s.Sid
AND l.Object_Id = o.Object_Id
AND o.Object_Name LIKE 'CUX_AP%'; --表名称
将以上SQL查出来的脚本,复制出来使用APPS或SYSTEM用户执行就可以杀死死锁的进程和会话。
二、解锁包死锁
平时修改包时,由于该包的程序正在执行,执行该包编译会一直无法完成。这个时候需要杀死相应的进程和会话,查询脚本如下:
SELECT DISTINCT 'Alter System Kill Session ''' || s.Sid || ',' || s.Serial# || '''immediate;'
FROM Dba_Ddl_Locks Dl
,V$session s
WHERE Dl.Session_Id = s.Sid
AND Dl.Owner = 'APPS'
AND Dl.Name LIKE