開發過程中存儲過程會用到臨時表TMP_TB, 數據庫在使用過程中,用戶去修改表結構時,會報“ORA-14450:試圖訪問已經在使用的事務處理臨時表”的錯誤。
解決方案:
1、重啟oracle,當在生產環境時此項不可取。
2、殺掉訪問TMP_TB的session
找到TMP_TB的object_id:
SELECT * FROM DBA_OBJECTS WHERE OBJECT_NAME='TMP_TB'; (假定是9876)
通過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='9876');
最后執行生成的語句。
