我创建了一个函数和过程,在该过程中调用该函数。根据函数的输出,在程序中我将数据插入到其他表中。现在该程序没有执行也没有被删除。如果我在sql developer或cmd中尝试其中任何一个,它就会运行并运行而没有来自db的响应。
DROP PROCEDURE proc_insert_data;
Sql开发人员只是无限时间在那里继续运行。 我签入了user_objects和all_objects:对象id为空,无效。
答案 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;