Undo回滾段中 Unexpired Block遲遲不釋放掉,占用90%以上的undo表空間.
導致數據庫事務等待嚴重. DML運行異常緩慢. JOB運行也有ora-01555錯誤.
詳細詢問了下UNDO表空間的具體設置,如下:
1、undo_retention=3600;
2、未設置表空間的retention guarantee;
3、UNDO表空間設置為非自動擴展;
4、數據庫版本11.2.0.1.0
oracle給了個參數,"_smu_debug_mode" = 33554432,改到系統(tǒng)中,報出一大堆ORA-01555,趕緊改了回來。
莫非是碰到bug了?查了下,在oracle 10.2.0.2-3,確實有個很類似的bug:5387030。
正常情況下,如果undo 表空間被設置為固定大小,不自動擴展,oracle會啟用Automatic Tuning of undo retention特性。
啟用Automatic Tuning of undo retention時,oracle會忽略undo_retention的設置,根據undo表空間大小、系統(tǒng)負載情況,自動調整undo_retention為一個合適的值。這個值一般會大于“所有事務的最長運行時間”。
10gR2的bug現象為,只要設置了undo表空間自動管理,不管有沒開自動擴展,不管undo_retention設置為多少,都會啟用 Automatic Tuning of undo retention的新特性。
這個bug的解決辦法:
10.2.0.2/10.2.0.3有相應的patch,這個bug在10.2.0.4中已經修復,建議找時間停機打patch
設置隱含參數_smu_debug_mode=33554432,將tuned_undoretention取值算法修正為max(maxquerylen secs + 300,undo_retention )
設置隱含參數_undo_autotune=false,關閉自動undo retention調整特性
在10.2.0.4及以后,這個bug就修復了。朋友那問題,肯定不是這bug引起的。
在查閱這bug時,發(fā)現Automatic Tuning of undo retention的啟用條件,與朋友那完全吻合,莫非這跟Automatic Tuning of undo retention有關。
查了下官方文檔,確實如此。
系統(tǒng)查了下,果然,undo_retention被自動調整了:
最后總結下,呵, 在oracle 10.2.0.4,oracle11g里面,如果碰到undo使用率100%,不釋放的問題。不建議再通過調整隱藏參數來解決undo占用率高的問題。
更推薦設置undo空間的自動擴展 + 限制文件大大小的方式來解決。
網頁名稱:Oracle—undo回滾段長時間不釋放-創(chuàng)新互聯(lián)
網站地址:http://www.rwnh.cn/article30/jddso.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站設計公司、網站制作、電子商務、外貿網站建設、面包屑導航、App設計
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)