无法放弃程序

时间:2014-02-26 08:09:13

标签: sql oracle procedures

我创建了一个函数和过程,在该过程中调用该函数。根据函数的输出,在程序中我将数据插入到其他表中。现在该程序没有执行也没有被删除。如果我在sql developer或cmd中尝试其中任何一个,它就会运行并运行而没有来自db的响应。

DROP PROCEDURE proc_insert_data;

Sql开发人员只是无限时间在那里继续运行。 我签入了user_objects和all_objects:对象id为空,无效。

2 个答案:

答案 0 :(得分:1)

也许你的程序被一些尚未完成的会话锁定。在你的情况下,我想,commit操作没有在另一个会话中完成。

您可以通过以下方式检查阻止会话:

SELECT
   s.blocking_session, 
   b.username blocking_username,
   b.osuser blocking_osuser,
   s.sid, 
   s.serial#, 
   s.seconds_in_wait,
   s.username
FROM
   v$session s,
   v$session b
WHERE
   s.blocking_session = b.sid
order by s.seconds_in_wait desc;

然后,在您识别会话后,您可以轻松地将其删除或请求管理员执行此操作。

答案 1 :(得分:1)

    Execute as Sys admin user, Below query lists out all the blocking sessions

  SELECT
       s.blocking_session, 
       b.username blocking_username,
       b.osuser blocking_osuser,
     s.sid, 
   s.serial#, 
   s.seconds_in_wait,
   s.username
FROM
   v$session s,
   v$session b
WHERE
   s.blocking_session = b.sid
order by s.seconds_in_wait desc;


    select sid,SERIAL#,status,username from v$session where sid=**[blocking_session]**;


   alter system disconnect session 'sid,SERIAL#' IMMEDIATE;