与Oracle的SAS连接挂起了2个小时

时间:2015-01-26 16:12:03

标签: oracle sas

在SAS中,我们有一个实际上是ORACLE模式的库,今天我在尝试查询此库中的表时遇到了一个奇怪的事件。 常规SAS SQL查询:

proc sql;
    delete from table where id=123;
quit;

挂了两个小时,通常需要几秒钟时间:

NOTE: PROCEDURE      SQL used (Total process time):
      real time           2:00:33.49
      cpu time            0.03 seconds

在执行此操作时,我尝试删除ORACLE SQL DEVELOPER中的附近行,但它也挂起了处理删除请求。但是,删除不在这些行附近的行不会导致任何问题。那我怎么能找出可能的原因呢?我猜这是一种僵局。

1 个答案:

答案 0 :(得分:1)

听起来有人锁定了您的会话尝试删除的行。您应该能够通过查询v $ session来发现这一点:

select sid, schemaname, osuser, terminal, program, event
from v$session
where type != 'BACKGROUND';

并检查您的会话是否有" enq:TX - 行锁争用" (或类似的)。如果是这样,那么你必须找出谁拥有阻止锁(如果你有权访问Toad的会话浏览器,这很容易做到,但谷歌应该放弃一些可以提供帮助的东西。或者,如果您的数据库是Oracle 11.2,那么有一个视图:v $ session_blockers应该查明阻塞会话),然后让他们提交或回滚他们的事务。