zoukankan      html  css  js  c++  java
  • UNDO表空间损坏导致数据库无法OPEN

    在数据库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不存在,无法打开数据库。

                解决思路非常easy:新建一个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;
  • 相关阅读:
    MySQL表行数查询最佳实践
    mysqldump备份表中有大字段失败的排错过程
    μC/OSⅡ在C8051F060上的移植及其应用
    OSSchedLock()函数透析
    32位与64位区别
    【Cesium】Animation显示系统时间
    【Cesium】根据经纬度计算距离
    【Cesium】 鼠标拾取椭球、地形、模型坐标点(经度+纬度+高程)
    【Python学习】Selenium模拟浏览器抓取数据
    【Cesium】polygon中的height和extrudedHeight的区别
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6773799.html
Copyright © 2011-2022 走看看