视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
UNDO表空间损坏导致数据库无法OPEN
2020-11-09 14:31:30 责编:小采
文档

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

在数据库undo表空间文件损坏,或者undo表空间文件缺失的情况下,无法打开数据库。 这两种情况都可以视为一种情况处理,解决方法一样。
场景:在23:10的时候新建一个undo表空间undotbs02,并切换至该undo表空间。 此时再闪回数据库至23:10。 由于闪回数据库时使用的是undotbs02,而23:10时使用的是undotbs01, 会造成undo表空间缺失,无法打开数据库。(注:闪回数据库之后需要resetlogs) 从上面的错误就可以看出来,此时undotbs02不存在,无法打开数据库。 解决思路很简单:新建一个undo表空间,然后将undo_tablespace 指向新的undo表空间。 但是....新建表空间只能在数据库open状态下才能进行。 所以: 因为Oracle system 表空间还有回滚段,因此我们先可以让Oracle使用system表空间回滚段 打开数据库,然后就可以新建表空间了。 新建表空间:
启动数据库。 这时可以新建一个undo表空间,然后将undo_tablespace参数指向过去 注:一定要把undo_management 参数修改为AUTO
通过以上步骤就可以完成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;

下载本文
显示全文
专题