本人在公司搭建了三套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秒。
呼~菜鸟的我又学到了东西了。数据库