本人在公司搭建了三套oracle集羣,據開發同事反映,說集羣3的undo表空間總是爆滿,資源也不釋放,由於業務問題,不能宕機。而後他就不斷的新建undo表空間,一直新建到undotbs6,原本默認是兩個的(undotbs1和undotbs2)。而後undo表空間愈來愈大,是在沒辦法了,他就經過刪除undo表空間的方法,不過刪除的時候,刪錯了,刪到了undotbs1,一共刪除了(undotbs1和undotbs4,undotbs5,undotbs6)。
當時undotbs2和undotbs3仍是滿空間,就想着經過重啓,而後同事付託我重啓,而後沒有留意,就直接重啓。而後報錯。
沒法找到對應的undo表空間。而後我就想了想,只能經過修改pfile的方法,經過把單一節點數據庫啓動到mount狀態,經過create pfile='$ORACLE_HOME/dbs/ora_1214.ora' from spfile;
而後修改pfile,把undo表空間改成undotbs2和undotbs3,而後經過pfile啓動數據庫,最後要經過當前的pfile建立spfile,要否則下次也會報錯。
這只是解決了正常啓庫的問題,最大的問題是undo表空間爆滿的問題,這樣刪除undo表空間只是治標不治本,之後仍是重蹈覆轍。經過查資料,和查數據庫的參數,發現一個參數:undo_retention 事務提交後保存在undo表空間的時間
被修改爲了18000秒,也就是5個小時。
個人天,默認是900秒的,怪不得undo表空間一直不夠,原來是這個緣由。業務不斷用,數據不斷累積,又不釋放。終於找到緣由了,立馬把它改成900秒。
呼~菜鳥的我又學到了東西了。數據庫