Oracle 如何删除在 会话1 下创建的临时表

本文介绍了如何在Oracle数据库中避免因临时表被会话占用而无法删除的问题,包括错误尝试、查看会话ID、终止会话以及最终的删除步骤。
摘要由CSDN通过智能技术生成

如何删除在 会话1 下创建的临时表

1.错误示例:
1.直接在会话1删除
ERROR at line 1:
ORA-14452: attempt to create, alter or drop an index on temporary table already in use

报错原因:该临时表正在当前会话使用,不能删除正在当前会话使用的临时表

2.在 会话2 删除

依然会报错:

ERROR at line 1:
ORA-14452: attempt to create, alter or drop an index on temporary table already in use

报错原因:在会话1创建的临时表,会话一此时还没有断开,所以该表无法删除。

2.解决方法

将 会话1 结束,然后在 会话2 中删除临时表

过程中会用到两个命令:

1.查看会话id
SELECT s.sid, s.serial#, s.username, s.program, s.osuser, s.machine, s.logon_time
FROM v$session s
JOIN v$sql sql ON s.sql_id = sql.sql_id
WHERE sql.sql_text LIKE '%temp_table%';
2.删除会话

注意:无法删除当前会话,只能从另一个会话中删除

如果删除当前会话会报错:

ERROR at line 1:
ORA-00027: cannot kill current session

解决方法:

查询要删除的会话id,在另一个会话中删除该会话。

3.删除方法:
ALTER SYSTEM KILL SESSION 'session_id,serial#' IMMEDIATE;

其中,session_idserial# 是你要终止的会话的标识符。

当 会话1 断开后,就可以在 会话2 删除临时表了

drop table temp_table
识符。

当 会话1 断开后,就可以在 会话2 删除临时表了

```sql
drop table temp_table
  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值