問題主要是要對臨時表進行修改,比如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語句。