oracle 我创建了一个全局临时表,我不能放下table

bxgwgixi  于 2023-10-16  发布在  Oracle
关注(0)|答案(2)|浏览(89)

在Unix中,连接到Oracle服务器,我在提交保留行上创建了一个临时表。然后我首先截断表,然后我去删除表。尝试删除表时,我收到以下错误:
ORA-14452:尝试在已使用的临时表上创建、更改或删除索引(DBD错误:错误可能在“drop table <> temp 01”中的字符11处的<>指示符附近)
我无法通过命令使用Kill结束会话,因为我没有权限。

elcex8rz

elcex8rz1#

在我看来,这个错误很明显:

$ oerr ora 14452
14452, 00000, "attempt to create, alter or drop an index on temporary table already in use"
// *Cause:  An attempt was made to create, alter or drop an index on temporary
//          table which is already in use.
// *Action: All the sessions using the session-specific temporary table have
//          to truncate table and all the transactions using transaction 
//          specific temporary table have to end their transactions.

因此,请确保 * 所有 * 会话都没有使用该表。即使有一个其他会话正在使用该表,您也会收到此错误,并且无法删除它。

hec6srdp

hec6srdp2#

在删除表之前,需要在所有会话中截断它。这对我很有效。

TRUNCATE TABLE temp_table;
DROP TABLE temp_table;

这是错误消息的一部分,它解决了首先需要截断的问题。

  • 操作:所有使用会话专用临时表的会话必须截断表,所有使用事务专用临时表的事务必须结束其事务。

相关问题