ORA-1652 無法擴(kuò)展TEMP表空間
ORA-1652: unableto extend temp segment by 128 in tablespace TEMP
報(bào)錯(cuò)原因?yàn)閠emp表空間無法擴(kuò)展
檢查temp表空間情況,主要查看表空間大小、是否開啟自動(dòng)擴(kuò)展。
SQL> selecttablespace_name,file_name,bytes/1024/1024 file_size,autoextensible fromdba_temp_files;
如果數(shù)據(jù)庫單次獲取的數(shù)據(jù)量大于臨時(shí)表空間的剩余空間量,就會(huì)出現(xiàn)temp表空間不足的情況。
臨時(shí)表空間被資源中的多個(gè)會(huì)話共享,quotas不能限制每個(gè)用戶使用臨時(shí)表空間數(shù)量,當(dāng)臨時(shí)表空間被填充滿時(shí),
任何嘗試獲得更多的臨時(shí)表空間的用戶將會(huì)得到ORA-1652: unableto extend temp segment”錯(cuò)誤。
但報(bào)警日志中并不會(huì)顯示具體sql語句,這時(shí)就需要使用oracle診斷事件跟蹤ora-1652異常,該診斷事件影響較小,僅在發(fā)生ora-1652錯(cuò)誤時(shí)才會(huì)寫入信息。
開啟跟蹤:
ALTER SESSIONSET EVENTS '1652 trace name errorstack'; #會(huì)話級別啟用跟蹤
ALTER SYSTEM SETEVENTS '1652 trace name errorstack'; #系統(tǒng)級別啟用跟蹤
關(guān)閉跟蹤:
ALTER SESSIONSET EVENTS '1652 trace name context off';
ALTER SYSTEM SETEVENTS '1652 trace name context off';
當(dāng)SQL語句缺少臨時(shí)表空間失敗且ORA-1652診斷事件被激活,那么相關(guān)進(jìn)程將在user_dump_dest目錄的跟蹤文件中寫入錯(cuò)誤信息。
這種方法雖然可以得到詳細(xì)信息,但捕獲到的語句并不一定是問題的根源,因?yàn)橛锌赡芮耙粋€(gè)語句已經(jīng)消耗了99.9%臨時(shí)空間,而第二個(gè)語句被捕獲到跟蹤文件中。
注意:ora-1652并不全部指示臨時(shí)表空間問題,執(zhí)行alter table … move語句時(shí),如果目標(biāo)表空間沒有足夠的空間容納移動(dòng)的表空間,也會(huì)發(fā)生ora-1652。
