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

在数据库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;

时间: 2024-10-13 01:36:48

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

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

服务器断电重启导致备份生产环境的恢复目录库无法进行启动,提示Ora-01092例程终止.强行断开连接 查看跟踪日志: Wed Jan 10 08:41:37 2018 Errors in file d:\Oracle\admin\l3bckdb\bdump\l3bckdbSMON.TRC: ORA-00600: internal error code, arguments: [4193], [1836], [1844], [], [], [], [], [] Wed Jan 10 08:41:3

oracle 11g 手动删除表空间文件导致数据库报错处理方法

简单说下原因:当时图方便没进数据库,直接在datafile目录下删除了表空间对应的数据文件 导致后来数据库报错,并且不能删除表空间 错误如下:ORA-01116:error in opening database ****ORA-01110:data file 54:'/home3/datafile/arrange/NewArrange.dbf'ORA-27041:unable to open fileLinux Error:2: No Such file or directoryAdditio

在线扩大数据库UNDO表空间

用oracle账号登陆ORACLE数据库服务器 方法一: 查看表空间的名字及文件所在位置: select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name; 修改数据库datafile文件到新的大小 alter database datafile '\oracle\oradata\undotab1.dbf'

undo表空间丢失、损坏

1.模拟误删undo表空间 rm -rf undotbs01.dbf 2.解决步骤 SQL> shutdown immediateORA-01116: error in opening database file 3ORA-01110: data file 3: '/u01/app/oracle/oradata/PROD1/undotbs01.dbf'ORA-27041: unable to open fileLinux Error: 2: No such file or directoryAd

无备份情况下回复undo表空间

UNDO表空间存储着DML操作数据块的前镜像数据,在数据回滚,一致性读,闪回操作,实例恢复的时候都可能用到UNDO表空间中的数据.如果在生产过程中丢失或破坏了UNDO表空间,可能导致某些事务无法回滚,数据库无法恢复到一致性的状态,Oracle实例可能宕机,之后实例无法正常启动:如果有多个UNDO表空间数据文件,丢失其中一个数据文件数据库实例可能不会导致实例宕机,数据库无法干净的关闭(只能SHUTDOWN ABORT),数据库实例能正常的重启,但所有未回滚的数据块依然无法处理,尝试新建UNDO表空

Oracle备份恢复之无备份情况下恢复undo表空间

UNDO表空间存储着DML操作数据块的前镜像数据,在数据回滚,一致性读,闪回操作,实例恢复的时候都可能用到UNDO表空间中的数据.如果在生产过程中丢失或破坏了UNDO表空间,可能导致某些事务无法回滚,数据库无法恢复到一致性的状态,Oracle实例可能宕机,之后实例无法正常启动:如果有多个UNDO表空间数据文件,丢失其中一个数据文件数据库实例可能不会导致实例宕机,数据库无法干净的关闭(只能SHUTDOWN ABORT),数据库实例能正常的重启,但所有未回滚的数据块依然无法处理,尝试新建UNDO表空

记一次ORACLE的UNDO表空间爆满分析过程

这篇文章是记录一次ORACLE数据库UNDO表空间爆满的分析过程,主要整理.梳理了同事分析的思路.具体过程如下所示: 早上收到一数据库服务器的UNDO表空间的告警邮件,最早一封是7:55发出的(监控作业是15分钟一次),从告警邮件分析,好像是UNDO表空间突然一下子被耗尽了. DB Tablespace Allocated Free Used % Free % Used 192.168.xxx.xxx:1521 UNDOTBS1 16384 190.25 16193.75 1.16 99 使用一

Oracle undo 表空间不可用

由于某次不小心操作,在切换表空间时没有成功,但是由于把parameter undo的undo_management值改为了MANUAL所以在启动数据库时没有报任何错误,但是给表插入数据时报错了,回滚段不可用的错误.然后查询了错误原因. 1 首先看数据库中undo信息 SQL> show parameter undo; NAME TYPE VALUE------------------------------------ ----------- --------------------------

【oracle11g,13】表空间管理2:undo表空间管理(调优) ,闪回原理

一.undo空间原理: dml操作会产生undo数据. update时,sever process 会在databuffer 中找到该记录的buffer块,没有就从datafile中找并读入data buffer.在修改之前,原始数据先放到undo段,并在数据块头记录undo段(acitve 状态)中该数据块的位置,读写这个块时会占用事务槽,会将该事务号记录在数据块的头部.然后在进行update,并将该块放到dirty list检查点队列,等待dbwr进行写操作. 二.创建新的undo表空间替换