在数据库undo表空间文件损坏。或者undo表空间文件缺失的情况下。无法打开数据库。

这两种情况都能够视为一种情况处理,解决方法一样。


场景:在23:10的时候新建一个undo表空间undotbs02,并切换至该undo表空间。
             

此时再闪回数据库至23:10。

            因为闪回数据库时使用的是undotbs02,而23:10时使用的是undotbs01,
            会造成undo表空间缺失。无法打开数据库。

(注:闪回数据库之后须要resetlogs)

            
            
            从上面的错误就能够看出来。此时undotbs02不存在,无法打开数据库。

解决思路非常easy:新建一个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;

UNDO表空间损坏导致数据库无法OPEN的更多相关文章

  1. 总结Oracle8i 的UNDO表空间损坏(ORA-01092及ORA-00600【4193】)情况下的数据库不完全恢复的经历

    服务器断电重启导致备份生产环境的恢复目录库无法进行启动,提示Ora-01092例程终止.强行断开连接 查看跟踪日志: Wed Jan 10 08:41:37 2018 Errors in file d ...

  2. UNDO表空间损坏,爆满,ORA-600[4194]/[4193]错误解决

    模拟手工删除UNDO表空间 在ORADATA 中把UNDOTBS01.DBF 删除 模拟启库 SQL> STARUP; * 第 1 行出现错误: ORA-01157: 无法标识/锁定数据文件 2 ...

  3. undo表空间

    undo表空间undo表空间的管理,主要包括创建.删除.修改.切换.其中需要注意的是不能在undo表空间创建数据库对象,还有就是只能是单文件或大文件表空间. 创建创建主要有两种方法,一种是在创建数据库 ...

  4. Oracle undo 表空间管理 (摘DAVID)

    Oracle 的Undo有两种方式: 一是使用undo 表空间,二是使用回滚段. 我们通过 undo_management 参数来控制使用哪种方式,如果设为auto,就使用UNDO 表空间,这时必须要 ...

  5. 万答#18,MySQL8.0 如何快速回收膨胀的UNDO表空间

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 背 ...

  6. UNDO表空间不足解决方法

    确认UNDO表空间名称 select name from v$tablespace; 检查数据库UNDO表空间占用空间情况以及数据文件存放位置: select file_name,bytes/1024 ...

  7. Oracle数据库 ORA-01555 快照过旧 (undo表空间:撤销表空间)

    UNDO表空间用于存放UNDO数据,当执行DML操作时,oracle会将这些操作的旧数据写入到UNDO段,以保证可以回滚或者一致读等,而临时表空间主要用来做查询和存放一些缓冲区数据.你听说UNDO也是 ...

  8. 模拟数据库丢失undo表空间

    数据库无事务情况下丢失undo表空间数据文件 1. 查看当前undo表空间,并删除物理undo文件 SYS@userdata>show parameter undo_tablespace; NA ...

  9. undo表空间丢失、损坏

    1.模拟误删undo表空间 rm -rf undotbs01.dbf 2.解决步骤 SQL> shutdown immediateORA-01116: error in opening data ...

随机推荐

  1. dd命令测试硬盘I/O速度

    [root@bogon ~]# dd if=/dev/zero of=/home/tom.a.txt bs=200MB count=1记录了1+0 的读入记录了1+0 的写出200000000字节(2 ...

  2. 关于easyui checkbox 的一些操作处理

    1.easyui在每一行加checkbox { field: 'id', title: '编号', checkbox: true } 2.easyui分页时记住前面已选的checkbox 设置easy ...

  3. HTML-坦克大战-完成子弹连发功能(三)

    如题,完成子弹连发功能,上一篇博客遗留的问题,不能够连发,且一直按J键则第一颗子弹会消失:那是因为定义的子弹变量只是一个变量,现在定义成一个数组:在之前的代码上修改如下: <!DOCTYPE h ...

  4. 病毒&烦人的幻灯片

    <病毒>传送门 <烦人的幻灯片>传送门 病毒 描述 有一天,小y突然发现自己的计算机感染了一种病毒!还好,小y发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改 ...

  5. Python 进阶 之 enumerate()函数

    enumerate()是Python的内置函数,无需依赖包,enumerate()作用是可以将生成器包装成生成器,类似于range,但enumerate()可以自动生成索引. enumerate(pa ...

  6. 能Ping通外网但就是不能打开所有网页的解决办法

    我碰到过两台电脑有这个问题.打百度的ip可以,但打网址不行.我记得是某个木马改动了三个dll文件,然后你电脑删了该木马,却没有恢复那三个dll所致.你google下dns恢复,注册dll关键字,一共要 ...

  7. kotlin 写的一个简单 sql 查询解析器

    package com.dx.efuwu.core import org.apache.commons.lang.StringUtils import java.sql.PreparedStateme ...

  8. android 仿真器联网

    1.查看仿真器dns C:\Users\meng\AppData\Local\Android\Sdk\platform-tools>adb shell 再输入 getprop 2.查看仿真器的名 ...

  9. 用JDBC操作MySQL——获取表的大小

    JDBC中获取MySQL我们有时需要获得表的大小,这包括了表的行数和列数,我们可以分别用以下的方法得到: 假设我们得到了一个ResultSet对象rs,则操作如下: 读取结果集前获取行数: rs.la ...

  10. hadoop学习二:hadoop基本架构与shell操作

    1.hadoop1.0与hadoop2.0的区别: