Oracle:臨時ORA-14450:試圖訪問已經在使用的事務處理臨時表


問題主要是要對臨時表進行修改,比如TEMP_TB表,對其中的一個字段長度進行修改(原來為2修改為3)

執行SQL語句:alter table TEMP_TB modify (columnName varchar(3));

報錯->“ORA-14450:試圖訪問已經在使用的事務處理臨時表”的錯誤

主要是臨時表的session還在被占用,解決方案有兩種,但是推薦第二種:

解決方案:

(1)重啟oracle服務(不推薦)

(2)1、殺掉訪問TEMP_TB的session;

2、找到TEMP_TB的object_id:

SELECT * FROM DBA_OBJECTS WHERE OBJECT_NAME='TEMP_TB'; (假定object_id為12345)

3、通過object_id獲取所有session,並直接生成kill語句:

SELECT 'ALTER SYSTEM KILL SESSION '''||SID||','||SERIAL#||''';' FROM V$SESSION WHERE SID IN(SELECT SID FROM V$ENQUEUE_LOCK T WHERE T.TYPE='TO' AND ID1='12345');

4、執行第三部生成的SQL語句:

--執行生成后的SQL語句解除死鎖

alter system kill session '*******';

5、最后執行你想要的操作SQL語句。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM