首页 >数据库 >mysql教程 >UNDO表空间损坏导致数据库无法OPEN

UNDO表空间损坏导致数据库无法OPEN

WBOY
WBOY原创
2016-06-07 16:06:491753浏览

在数据库undo表空间文件损坏,或者undo表空间文件缺失的情况下,无法打开数据库。这两种情况都可以视为一种情况处理,解决方法一样。 场景:在23:10的时候新建一个undo表空间undotbs02,并切换至该undo表空间。 此时再闪回数据库至23:10。 由于闪回数据库时使

在数据库undo表空间文件损坏,或者undo表空间文件缺失的情况下,无法打开数据库。 这两种情况都可以视为一种情况处理,解决方法一样。
场景:在23:10的时候新建一个undo表空间undotbs02,并切换至该undo表空间。 UNDO表空间损坏导致数据库无法OPEN - AllenLi - Allen的博客 此时再闪回数据库至23:10。 由于闪回数据库时使用的是undotbs02,而23:10时使用的是undotbs01, 会造成undo表空间缺失,无法打开数据库。(注:闪回数据库之后需要resetlogs) UNDO表空间损坏导致数据库无法OPEN - AllenLi - Allen的博客 UNDO表空间损坏导致数据库无法OPEN - AllenLi - Allen的博客 从上面的错误就可以看出来,此时undotbs02不存在,无法打开数据库。 解决思路很简单:新建一个undo表空间,然后将undo_tablespace 指向新的undo表空间。 但是....新建表空间只能在数据库open状态下才能进行。 所以: 因为Oracle system 表空间还有回滚段,因此我们先可以让Oracle使用system表空间回滚段 打开数据库,然后就可以新建表空间了。 UNDO表空间损坏导致数据库无法OPEN - AllenLi - Allen的博客 UNDO表空间损坏导致数据库无法OPEN - AllenLi - Allen的博客 新建表空间: UNDO表空间损坏导致数据库无法OPEN - AllenLi - Allen的博客
启动数据库。 这时可以新建一个undo表空间,然后将undo_tablespace参数指向过去 注:一定要把undo_management 参数修改为AUTO UNDO表空间损坏导致数据库无法OPEN - AllenLi - Allen的博客 UNDO表空间损坏导致数据库无法OPEN - AllenLi - Allen的博客
通过以上步骤就可以完成undo表空间损坏或缺失导致的数据库无法打开问题。
总结: 需要注意的问题: 1. 在闪回数据库之后,打开数据库时需要使用 alter database open resetlogs; 命令重置重置日志 2. 要闪回数据库,数据库要装载但不能打开(mount状态下闪回数据库) 3. 记得将undo_management 参数修改回来。使用:alter system set undo_management=auto scope=spfile;
下面是利用system表空间回滚段新建undo表空间的步骤: 1. 将数据库启动到mount 2. alter system set undo_management=manual scope=spfile; -- 设置undo表空间的管理方式 3. shutdown immediate; 4. startup 然后新建一个undo表空间 undotbs03; 5. 修改undo_tablespace 参数指向新建的undo表空间 undotbs03; ** 6. 记得将undo_management 参数修改回来。 alter system set undo_management=auto scope=spfile; 7. SQL> alter system set undo_management=manual scope=spfile; auto表示:该表空间是由Oracle来管理的(自动分配给不同事物使用) manual表示:该表空间的block是通过freelist来管理如何存储数据的。 8. 打开数据库 ** 9. 打开数据库后一定要把undo_management 参数修改回来。 alter system set undo_management=auto scope=spfile;
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn