请确保您的会话没有等待的行锁。以下SQL * Plus脚本可以为您提供有关如何执行此操作的提示。或者在Blocking Sessions下查看Oracle Enterprise Manager(Oracle Web GUI)。
BTW死锁是不同的东西,数据库会照顾杀死两会的一个...
REM Purpose
REM -------
REM Display locks currently held and requested. Displays which session a
REM blocked lock is waiting for.
REM
REM Ver Who When What
REM --- --- ---- ----
REM 1.0 DrB 12-Dec-97 Initial version
col uname head "Username" form a12
col sid head "SID" form 999
col ltype head "Type" form a4
col lmode head "Mode" form a10
col blocked head "Wait" form a4
col details head "Details" form a40
set verify off
set pause on
accept user prompt "Username [%]: "
select SubStr('alter system kill session ''' || s.sid || ',' || s.serial# || ''';', 1, 40) as kill, s.username uname, 'DML' ltype,
decode (l.lmode,1,'Null',
2,'Row-S',
3,'Row-X',
4,'Share',
5,'S/Row-X',
6,'Exclusive') lmode,
decode (l.request,0,'No','Yes') blocked,
u.username||'.'||o.name details,
Nvl(s.Program, s.Module) What
from v$session s, v$lock l, sys.obj$ o, all_users u
where s.username like nvl(upper('&user'||'%'),'%')
and s.sid = l.sid
and l.id1 = o.obj#
--and l.type = 'TM'
and o.owner# = u.user_id(+)
union all
select SubStr('alter system kill session ''' || s.sid || ',' || s.serial# || ''';', 1, 40) as kill, s.username uname,
decode (l.type,'TX','TX',
'UL','USR',
'SYS') ltype,
decode (l.lmode,1,'Null',
2,'Row-S',
3,'Row-X',
4,'Share',
5,'S/Row-X',
6,'Exclusive') lmode,
decode (l.request,0,'No','Yes') blocked,
decode (l.request,0,null,'Waiting on session '||to_char(b.sid)) details,
Nvl(s.Program, s.Module) What
from v$session s, v$lock l, v$lock b
where s.username like nvl(upper('&user'||'%'),'%')
and s.sid = l.sid
and l.type != 'TM'
and l.id1 = b.id1(+)
and b.request(+) = 0
order by 5 desc,3 desc,2,1;
set verify on
REM End of file
你可以发布存储过程代码和调用JDBC代码吗? – Nicholas 2011-05-17 13:39:02
我可以给你一些代码的提示; – ttr13p 2011-05-26 10:29:49
不幸的是我不能打印代码,但可以描述它。存储过程非常复杂且效率不高。但它确实在sql开发人员中相对较快地终止; PROCEDURE stored_procedure(v_cur OUT SYS_REFCURSOR) IS BEGIN OPEN v_cur为 WITH first_temp_table AS ( SELECT FROM <内部联接但也有许多笛卡尔积> WHERE ) second_temp_table AS ( SELECT FROM <内连接,但也有很多笛卡尔产品> WHERE <使用first_temp_table>的子查询> )<在临时表上进行最终查询选择,具有非常复杂的不合理选择和连接> – ttr13p 2011-05-26 10:53:39