在生成环境中,因为业务的需求,需要对临时表进行处理。如果说临时表在使用中,被占用,操作就会报错。针对这种问题,解决方法如下:
(1)---查找还在使用临时表的会话
SELECT
sid
,serial#
FROM v$session
WHERE sid = (
SELECT
sid
FROM v$lock
WHERE id1 = (
SELECT
object_id
FROM user_objects
WHERE object_name = upper('你的临时表名')
)
)
;
(2)--使用上面查出的sid和serial#,杀掉会话
ALTER system kill session 'sid,serial#';
kill 操作之后你再修改你的临时表或者drop都不会报错了。注:有时候会有多个地方用到同一个临时表,需要把(1)中的 sid= 改成 sid in , id1 = 改成 id1 in ,将查出的所有 sid和serial#全部kill 掉。
(1)---查找还在使用临时表的会话
SELECT
sid
,serial#
FROM v$session
WHERE sid = (
SELECT
sid
FROM v$lock
WHERE id1 = (
SELECT
object_id
FROM user_objects
WHERE object_name = upper('你的临时表名')
)
)
;
(2)--使用上面查出的sid和serial#,杀掉会话
ALTER system kill session 'sid,serial#';
kill 操作之后你再修改你的临时表或者drop都不会报错了。注:有时候会有多个地方用到同一个临时表,需要把(1)中的 sid= 改成 sid in , id1 = 改成 id1 in ,将查出的所有 sid和serial#全部kill 掉。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29609890/viewspace-2154277/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29609890/viewspace-2154277/