undo回滚异常导致实例奔溃,无法正常open

接到地市反馈某一个数据库打不开了

1.登陆主机,查看数据库告警日志

最早数据库出现问题时的日志是在2014年6月7日

数据库在切换redo时异常关闭,之后数据库一直为开启使用

2.数据库在2014年6月8日 OPEN后,有recovery的进程报错

目前已经找不到这些文件,无法核实当时的异常信息源,接着往下看日志

3.数据库在2014年6月9日11:36:45时又异常关闭

4.同样的现象出现在2014年8月11日13:26:07,数据库异常关闭

5.数据库在2014年8月11日13:18:46再次启动

整个数据库打开的过程中,控制文件正常加载,redo正常recovery,且前滚已经结束,在做后滚的时候数据库出现异常

6.可以从v$database、v$datafile_header、v$datafile看出数据库的scn已经处于一致状态,说明前滚已经结束,可以正常OPEN

。。。后面的数据文件省略

。。。后面的数据文件省略

7.查看pmon和smon的trace文件

PMON TRACE:/opt/oracle/app/admin/hfjyfx/bdump/hfjyfx_pmon_8198.trc

SMON TRACE:/opt/oracle/app/admin/hfjyfx/bdump/hfjyfx_smon_8210.trc

说明数据库在前滚结束,OPEN数据库的同时,由于UNDO里面的事务回滚时(undo segment 12),无法对file 63 block 1531279进程更新,导致回滚失败,实例异常终止。

【解决方案】

1.使用隐含参数屏蔽异常回滚段_offline_rollback_segments=_SYSSMU12$

2.修改undo_tablespace=SYSTEM/undo_management=MANUAL

3.启动数据库,快速删除包含_SYSSMU12$ undo表空间

4.新建undo表空间

5.修改undo_tablespace=new_undo/undo_management=AUTO,除掉隐含参数

6.使用新参数文件重启数据库

7.建议:使用逻辑导出导入重建数据库

undo回滚异常导致实例奔溃,无法正常open,布布扣,bubuko.com

时间: 2024-10-06 21:54:28

undo回滚异常导致实例奔溃,无法正常open的相关文章

从一个弱引用导致的奔溃 谈 weak assign strong的应用场景【iOS开发教程】

从一个弱引用导致的奔溃 谈 weak assign strong的应用场景 .h中的定义方法一: @property (nonatomic, assign) NSArray *dataSource; 定义方法二 @property (nonatomic, strong) NSArray *dataSource; .m中的实现方法 - (void)viewDidLoad { [super viewDidLoad]; if (YES) { NSArray *array = @[@"1",

Oracle Undo回滚段深入解析_超越OCP精通Oracle视频课程培训15

oracle视频教程目标 Oracle视频教程,风哥本套oracle教程培训学习oracle数据库UNDO的作用及相关数据字典,UNDO自动管理,DDL与DML操作与UNDO的关系,UNDO表空间满了怎么办?模拟ora-01555,UNDO表空间损坏怎么处理?Undo段头/回滚块/事务槽解析,UNDO回滚段头的深入分析,事务提交前后oracle内部操作?深入分析前镜像及一致性读. 适用人群 IT相关从业人员.Oracle数据库技术人员.想加工资的.想升职的都可以. 视频在线学习地址: http:

oracle undo回滚段详解

1.Undo是干嘛用的?   在介绍undo之前先说一下另外一个东西 transaction ,翻译成交易或事务.我们在进行一个事务的过程中需要申请许多资源,一个复杂的事务也需要很多步来完成.那么一个复杂的事务是只有两个结果,要么成功,要么失败(相当于从来没发生过). 一个很典型的列子,银行转账,其实其需要两步操作,第一步先将你账户上的钱减去,第二步把被转账户的钱加上,(先减后加,出了问题银行不吃亏.呵呵!)这样就是一个完整的事务.如果执行了一半,你的钱减了,被转账户的钱没加上,这个时候事务就要

Spring中@Transactional事务回滚(含实例详细讲解,附源码)

原文出处: 小宝鸽 一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用.下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除某个部门的时候,假设我们默认删除对应的成员.但是在执行的时候可能会出现这种情况,我们先删除部门,再删除成员,但是部门删除成功了,删除成员的时候出异常了.这时候我们希望如果成员删除失败了,之前删除的部门也取消删除.这种场景就可以使用@Transactional事物回滚. 二.che

mysql5.6和mysql5.7分配undo回滚段的区别

1.mysql5.7中分为2类:临时表空间回滚段和普通回滚段. 2.mysql5.6中没有区分. As of MySQL 5.7.2, 32 undo logs are reserved for use by temporary tables and are hosted in the temporary table tablespace (ibtmp1). To allocate additional undo logs for data-modifying transactions that

Undo(回滚段)对应的系统参数

回滚段表空间,为什么叫Undo,而不是rollback?我们对数据库操作理解为do,所以反向操作就是undo,通过对应的undo就可以达到回滚目的. 第一行,undo_management 为AUTO表示自动回滚段管理,空间不够时自动扩展. 第二行,undo_retention 为900表示DML需要记录前镜像,当commit后,回滚段前镜像被打上了可以覆盖重新使用的标记,但要在900秒后才可以. 第三行,UNDOTBS1为回滚段表空间的名字 原文地址:https://www.cnblogs.c

Mysql 回滚 insert 导致 ibd 文件增大‘一倍’

一个简单的测试: start transaction; insert into tb1 values(3, repeat('a', 65000),'x',1); --commit; rollback; 下图分别是 tb1.ibd 在插入前,回滚前,回滚后的文件大小: 有人在QQ群问原因. --------------------------------------- 其实原因很简单: 131072-98304=163840-131072=32768所以:回滚insert = delete + r

Ubuntu 16.04升级4.7.0内核后导致Compiz奔溃,问题:compiz[4852]: segfault at 48 ip 00007f88cae087f0 sp 00007ffce354c268 error 4 in libscale.so

由于硬件的驱动支持问题,升级4.7.0的内核主要是为了能使用Intel HD Graphics 630驱动,但是也出现了相关问题,比如Compiz的特效导致桌面上如果有多个相同程序启动,然后再次点击时就会出现闪烁和崩溃问题.查找日志如下: compiz[4852]: segfault at 48 ip 00007f88cae087f0 sp 00007ffce354c268 error 4 in libscale.so[7f5ce70cb000+24000] 解决方法: 这些方法只能尝试,不一定

android app记录运行日志 捕获奔溃异常 ,存储日志到文件

app在运行过程中,为了后期的维护升级,记录日志是一个非常好的方法. 为了读取到app运行时的日志,一般的作法是单独开一个线程,在app运行的启动线程,然后app退出时停掉线程. 然而我们更好的方法是开启一个service,然后在里面做日志记录,代码如下: package com.hai.logcat; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.File; import java.i