>進入 很多情況下,臨時段并不會被像想象那樣被清除掉,而是一直駐留n個小時,這會導致表空間不恰當的運行溢出,為了避免此類問題發生,數據庫管理員可以定期激活清除孤獨的臨時段。 產生的原因: 當一個" />
歡迎進入Oracle社區論壇,與200萬技術人員互動交流 >>進入 很多情況下,臨時段并不會被像想象那樣被清除掉,而是一直駐留n個小時,這會導致表空間不恰當的運行溢出,為了避免此類問題發生,數據庫管理員可以定期激活清除孤獨的臨時段。 產生的原因: 當一個
歡迎進入Oracle社區論壇,與200萬技術人員互動交流 >>進入
很多情況下,臨時段并不會被像想象那樣被清除掉,而是一直駐留n個小時,這會導致表空間不恰當的運行溢出,為了避免此類問題發生,數據庫管理員可以定期激活清除孤獨的臨時段。
產生的原因:
當一個段被刪除時,其分區不會立刻釋放。當進程刪除段后,段僅僅更改為其類型為臨時段,如果語句失敗,該操作將會備回滾。臨時段通常被清除并基于調用的結果釋放分區,但是如果字典緩存行代表的段仍然在使用或是臟的,臨時段清除將不會在此時發生。這通常在臨時段被遞歸調用釋放時出現,因為父事務沒有提交,臨時段不會被立刻清除。
如何使孤獨的臨時段被清除
清除臨時段并釋放它們的分區是SMON進程的任務。雖然smon每5分鐘被喚醒,但是除非被顯示喚醒,否則其每隔
2:05才檢查一次臨時段。即使如此,每次也只能清除5個臨時段,并且必須在5秒內得到鎖。因此臨時段清除可能很長時間才出現。
但是如果smon被其他進程顯示喚醒,它將執行臨時段清除。smon在每次空間事務失敗時也會被喚醒。通常較好的方法是使用ORADEBUG WAKEUP命令進行喚醒。
具體示例如下:
column pid new_value Smon set termout off select p.pid from sys.v_$bgprocess b, sys.v_$process p where b.name = 'SMON' and p.addr = b.paddr / set termout on oradebug wakeup &Smon undefine Smon |
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com