我明明 immediate 关库的,怎么就打不开了?!

五一放假期间,某客户的数据库出现故障,据说对方找了一些工程师折腾了一天,都无法将数据库open,其中参考了网络上的很多文章,也使用了一系列隐含参数,均无法将数据库打开。这里我简单的与大家分享一下这个case。

首先我介绍一下整个case的背景,客户在4月30号凌晨通过shutdown immediate停库维护后,启动数据库无法报错,此时发现数据库无法open,期间尝试了各种数据库手段,均失败告终。

我们先来看看相关日志,如下是数据库停库的日志:

我们可以看出,这个数据库确实是以shutdown immediate的方式停止的。客户第一次尝试启动时,发现报错ORA-00600 [2663],如下:

这是一个非常常见的错误,这个错误通常是是跟数据块有关系。我们知道,根据经验,一般来讲,如果current scn (这里是scn base)与dependent scn(scn base)非常接近(且scn wrap都一致或者为0)的情况下,说明scn的差异非常小,通过多次重启数据库的手段,基本上可以绕过这个错误。

果然,通过看客户提供的alert log发现多次重启后,alert log的报错日志变了ORA-00600 [4194]错误,如下:

这是一个看似非常简单的错误,大致意思是说Oracle 在进行事务恢复时发现redo和undo的信息有所出入,因此抛出这个错误。

这里我贴出Oracle MOS的标准解释供大家参考:Basic Steps to be Followed While Solving ORA-00600 [4194]/[4193] Errors Without Using Unsupported parameter (文档 ID 281429.1)

上述文档中提到,这个错误其实就是指恢复时发现undo block对应的record 编号与redo block 对应的undo record 编号不一致。通常情况下来讲,都是由于回滚段损坏导致的问题。 这里我们先不去进行alert log的详细分析展开了,以自己的实际操作过程来进行展开分析说明。如下是我的简单恢复过程。

首先我尝试进行正常恢复,并打开数据库:

我们可以看到操作报错,并没有打开数据库。此时查看数据库alert 告警日志,发现正是前面提到的ORA-00600 [4194]错误:

这个ora-00600 错误与前面提到的完全一致。根据我们常规处理这个错误的套路,基本上就是使用undo_management=’manual’ 来尝试绕过,经过测试发现不好使。

进一步查看对应的trace 文件,发现oracle提示说某个块存在异常:

上述的错误其实也很容易解释,简单的讲就是redo应用时出现了异常,而且oracle 明确提升file 1 block 131 这个undo block有问题. 上述的内容是redo block的dump;那么我们来看看对应的undo block 中的前镜像是什么:

我们可以看到完全不匹配,同时我们通过脚本将上述内容进行转换,可以发现是其实是回滚段名称:

其次结合我们前面解释ora-00600  [4194]错误来看,这里undo block 对应的record number是0×20,而redo block中记录的record number是0×2. 这确实是不匹配的。

那么怎么解决这个问题呢? 能不能通过屏蔽回滚段的方式来解决呢?

我尝试在open之前设置10046 trace,来观察了一下得到了如下结果:

可以看到oracle在执行update  undo$时报错,其中更新的是_SYSSMU1_3724004606$ 这个回滚段。而且我们也可以看到,wait# 中记录的正好是前面报错的file# 1 block 131. 那么通过_corrupted_rollback_segments=(_SYSSMU1_3724004606$)


这种方式是否可以解决这个问题呢?

很遗憾,这里我测试也不行。甚至通过bbed 修改undo$的kdbr记录,将_SYSSMU1 的状态修改为offline,也无法绕过这个ora-00600 4194错误。简直堪称最顽固的ORA-00600 [4194]。

我又检查了一下前面的trace文件,发现所针对这个回滚段头的dump记录,可以确认其中并没有什么活动事务。然后再仔细看我们所遇到的这个ora-00600 [4194]错误,我感觉有点怪异。为什么说怪异呢?

如果说根据Oracle mos的解释文档来看,这里是是没有[a],[b] 值的,因为均为0.

最后我们想到通过修改system 回滚段头来绕过这个错误,如下是操作过程:

注意,这里我们仅仅需要修改ktuxcnfb和ktuxcfbp[1] 即可。其中将ktuxcnfb修改为0,ktuxcfbp[1]中的uba修改为0.

然后再尝试打开数据库,发现顺利打开了数据库,如下:

接着检查了数据库alert log,也没有发现任何的ora-错误。看到最后,或许大家会觉得很奇怪,为什么会出现这样的故障呢 ?  这里我也跟大家一样困惑。

这库是通过shutdown immediate方式正常停止的。我们都知道,这种方式停库之后,整个Oracle数据库的文件都是处于一致的状态,重新启动数据库实例后按理说是不需要再进行实例恢复的。

那么为什么这里又出现了这种情况呢?

针对这个问题,我认为有2种可能性:

1、shutdown immediate之后,数据库写入到操作系统cache,还未完全写入到disk上时,此时数据库主机被强行重启;由于操作系统cache丢失,导致数据库出现了不一致的情况(本文环境是Linux文件系统)。

2、其他程序或软件破坏了Oracle数据库文件的一致性(实际上,经过了解该环境部署了Rose HA软件;而且客户在操作时,据说并没有停止rose ha软件)。

由于客户操作的时间点是凌晨2点,几乎是0业务场景,因此我认为第一种可能性几乎为0;第2种可能性更大。

当然由于我们不了解Rose HA软件的工作机制,这里不便评论。只能说这是一个非常奇怪的case了。值得欣慰的是,通过我们的努力,很快就帮助客户恢复了系统访问,并且无数据丢失。

本文出自数据和云公众号,原文链接

时间: 2024-10-03 13:51:49

我明明 immediate 关库的,怎么就打不开了?!的相关文章

数据恢复:一则强行关库引发的蝴蝶效应

李真旭(Roger) ACOUG 核心专家,Oracle ACE,云和恩墨技术专家 这是某网友的维护的一套数据库,据说是正常重启之后就无法启动数据库了.那么我们先来看看日志是什么样的: 我们可以看到,节点1在9:48:52秒被强行终止重启了实例.而且我们还可以看出该节点从9:42开始就出现ORA-27090 错误.而该错误通常跟操作系统有关系,通过后面的Linux-x86_64 Error: 4: Interrupted system call 错误也验证了这一点. 这里我们无论是看节点1还是节

酷我音乐盒曲库不显示,打不开解决办法

  问题的具体截图如下,打开酷我音乐盒后,曲库不显示了! 酷我音乐盒曲库不显示怎么办? 1.首先请检查你的网速情况,最好是用360安全卫士的宽带测速器检查一下 2.如果网速没有问题,那应该就是酷我音乐盒软件本身的问题,检查一下是否有更新,一般官方的最新版本都会对旧版本的各种bug进行修复!

酷我音乐盒曲库不显示、打不开怎么解决

问题的具体截图如下,打开酷我音乐盒后,曲库不显示了! 酷我音乐盒曲库不显示怎么办? 1.首先请检查你的网速情况,最好是用360安全卫士的宽带测速器检查一下.   2.如果网速没有问题,那应该就是酷我音乐盒软件本身的问题,检查一下是否有更新,一般官方的最新版本都会对旧版本的各种bug进行修复!

Oracle中DG备库报错ORA-00313、00312、27037

DATAGUARD配置如下: PROD为主库,SBDB为备库 日志组1-3组为redolog file,4-6组为standby log 在创建standby log后主库关库,使用冷备tar包将数据传输到备库进行的恢复. DG配置完成之后,启动备库之后,备库alert日志报错如下: Errors in file /u01/app/oracle/admin/SBDB/udump/sbdb_rfs_14903.trc: ORA-00313: open failed for members of l

《众妙之门——JavaScript与jQuery技术精粹》——1.8 特定于浏览器的代码就是浪费时间,试试库文件

1.8 特定于浏览器的代码就是浪费时间,试试库文件 在我进行网络开发之初,利用document.all还是document.layers来访问文件还存在很大的争议.我当时选择了document.layers方式,因为我喜欢将层作为当前层文件的思想(我为此还编写了大量document.write方法).这两种方式后来都被淘汰了.Netscape 6问世以后,它仅支持W3C DOM模型,我非常喜欢这种方式,但是终端用户并不在意这些,他们看到的只是这种浏览器没有正确显示大部分互联网内容(实际上是显示了

香特莉西饼集中关店引争议市民面包券疑成废纸

香特莉门店仅剩一家 市民担心券变成废纸 公司回应:淮海中路店能兑换 协会:所属集团正考虑重组 □晨报记者 王亦菲 实习生 王思 继今年4月上海香特莉西饼屋"批量"关闭约30家门店后,14家门店近期又不断"缩编",目前全上海只剩下淮海中路一家门店仍在营业.不过,昨天中午不少消费者赶去兑换,却发现店内除了饮料什么都没有,市民担心手中剩余的香特莉面包券变成废纸. 上海香特莉食品发展有限公司营销总监解静昨天证实,目前仅剩淮海中路店还在营业,市面上还剩价值50万元左右的西饼

关于WEB的数据库查询

web|数据|数据库 ---- 97 年 以 来 基 于WEB 的 数 据 库 应 用 在 数 据 库 界 谈 论 的 颇 多, 基 于WEB 的 数 据 库 的 应 用, 是 将 数 据 库 和WEB 技 术 结 合, 按 照BROWS/SERVER 结 构 建 立 的 通 过 浏 览 器 访 问 数 据 库 的 服 务 系 统. 目 前 以WEB 数 据 库 为 旗 帜 的 产 品. 原 形 或 设 计 方 案 及 研 究 论 文 很 多, 开 发 数 据 库 的WEB 应 用, 建 立 能

雅虎外链关闭了 但搜搜外链开放了

外链基本上是做SEO人员们认为最影响关键词排名的一个因素,自从去年雅虎不提供网站外链查询之后,让我们不少站长们郁闷了一把.因为一直以来雅虎外链是比较准确的,像谷歌,必应,搜狗都是不提供外链查询的.百度提供的相关域查询很不准确.像我们做SEO的人基本上查询外链是以雅虎的外链为准.一下子关闭了,这就好像让我们对外链迷失了双眼似的.不能根据竞争对手的外链情况制订出准确的外链发布计划,这对于SEO来说是一个麻烦事.以前相信大家在找寻外链的时候多半也是参考雅虎的,可是现在没有了,令不少SEOer产生了不少

Unix/Linux中/usr目录简介

在Linux系统中,有一个很重要的目录--/usr目录.关于这个目 录名称的由来,网上主要有下面几种说法: user的缩写 User Shareable Read-only的缩写 Unix/User System Resources的缩写 Unix/User Software Resources的缩写 目前大多数版本的Linux中/usr目录主要放置的是可执行文件和先关库文件, 因此user好像不太可能. 查阅了相关的资料,关于/usr目录起源的说法如下: /usr usually contai