?? ???? 當排序操作、重建索引等大型操作無法在內存中完成時,臨時表空間將為排序提供便利。一般情況下臨時表空間為多個用戶,多個會話所共
享。不能為會話分批空間配額。臨時表空間耗用過度且在不能自動擴展的情形下將收到“ORA-1652:unable to extend temp segment” 錯誤.下面
描述了過度擴展后如何釋放臨時表空間。
與之相關的內容參考:
?? ??? ? Oracle 表空間與數據文件
?? ??? ? 臨時表空間的管理與受損恢復
?? ??? ? Oracle 徹底 kill session
一、臨時表空間何時釋放
?? ??? ?檢索數據的會話游標關閉時,占用的臨時空間即被釋放
?? ??? ?數據庫關閉,重啟(一般情況),會話 log off
二、釋放過大的臨時表空間
三、總結
1、關注alert_<sid>.log文件中的ORA-1652錯誤并調查什么原因導致該錯誤。有些時候并不是由于當前的SQL 導致臨時表空間不能擴展,很可能
?? ??? ?由于前一個SQL耗用了99%的臨時表空間,而后一個SQL執(zhí)行時即出現錯誤。對于此類情況應調查前一SQL并調整避免過多的磁盤排序。
2、如果基于空間壓力應該關閉臨時表空間的自動擴展。因此為臨時表空間設定合理的大小就成了一個問題。個人的解決方案是首先檢查ORA-1652
??? 其次是觀察業(yè)務高峰期的峰值。如前面查詢中的字段Max Size(: Maximum number of MB ever used)的值來預估。如果大師們有更好的建議
??? 不妨拍磚。
3、通過重啟數據庫,臨時表空間所耗用的大小有時候并不能縮小。
4、在Oracle 11g之前一般是通過創(chuàng)建中轉臨時表空間來達到縮小的目的。不是很完美,因為有些時候臨時段未釋放導致不能刪除臨時表空間及
?? ??? ?數據文件。在11g可以直接使用下面的命令來完成:
?? ??? ?alter tablespace temp shrink space;
?? ??? ?alter tablespace temp shrink tempfile '<dir>' keep n <mb/kb>;
5、系統(tǒng)缺省的臨時表空間不能被刪除,因此如果系統(tǒng)缺省的臨時表空間過大刪除前應該新置一個系統(tǒng)缺省的臨時表空間。
6、刪除過大臨時表空間前其上的用戶應該先將其設定到中轉臨時表空間,重建后再將其置回原狀態(tài)。
7、減少磁盤排序的首要任務調整SQL,如避免笛卡爾積,為表添加合理的索引等。其次要考慮PGA的值是否設定合理。
四、相關參考
?? ??? ? Oracle 表空間與數據文件
?? ??? ? 臨時表空間的管理與受損恢復
?? ??? ? Oracle 徹底 kill session
享。不能為會話分批空間配額。臨時表空間耗用過度且在不能自動擴展的情形下將收到“ORA-1652:unable to extend temp segment” 錯誤.下面
描述了過度擴展后如何釋放臨時表空間。
與之相關的內容參考:
?? ??? ? Oracle 表空間與數據文件
?? ??? ? 臨時表空間的管理與受損恢復
?? ??? ? Oracle 徹底 kill session
一、臨時表空間何時釋放
?? ??? ?檢索數據的會話游標關閉時,占用的臨時空間即被釋放
?? ??? ?數據庫關閉,重啟(一般情況),會話 log off
二、釋放過大的臨時表空間
三、總結
1、關注alert_<sid>.log文件中的ORA-1652錯誤并調查什么原因導致該錯誤。有些時候并不是由于當前的SQL 導致臨時表空間不能擴展,很可能
?? ??? ?由于前一個SQL耗用了99%的臨時表空間,而后一個SQL執(zhí)行時即出現錯誤。對于此類情況應調查前一SQL并調整避免過多的磁盤排序。
2、如果基于空間壓力應該關閉臨時表空間的自動擴展。因此為臨時表空間設定合理的大小就成了一個問題。個人的解決方案是首先檢查ORA-1652
??? 其次是觀察業(yè)務高峰期的峰值。如前面查詢中的字段Max Size(: Maximum number of MB ever used)的值來預估。如果大師們有更好的建議
??? 不妨拍磚。
3、通過重啟數據庫,臨時表空間所耗用的大小有時候并不能縮小。
4、在Oracle 11g之前一般是通過創(chuàng)建中轉臨時表空間來達到縮小的目的。不是很完美,因為有些時候臨時段未釋放導致不能刪除臨時表空間及
?? ??? ?數據文件。在11g可以直接使用下面的命令來完成:
?? ??? ?alter tablespace temp shrink space;
?? ??? ?alter tablespace temp shrink tempfile '<dir>' keep n <mb/kb>;
5、系統(tǒng)缺省的臨時表空間不能被刪除,因此如果系統(tǒng)缺省的臨時表空間過大刪除前應該新置一個系統(tǒng)缺省的臨時表空間。
6、刪除過大臨時表空間前其上的用戶應該先將其設定到中轉臨時表空間,重建后再將其置回原狀態(tài)。
7、減少磁盤排序的首要任務調整SQL,如避免笛卡爾積,為表添加合理的索引等。其次要考慮PGA的值是否設定合理。
四、相關參考
?? ??? ? Oracle 表空間與數據文件
?? ??? ? 臨時表空間的管理與受損恢復
?? ??? ? Oracle 徹底 kill session
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
