阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

ORA-00600 [2662]错误解决过程

191次阅读
没有评论

共计 1839 个字符,预计需要花费 5 分钟才能阅读完成。

Oracle 数据库版本:7.3.2

背景:

客户那边数据库突然出现一个 current 日志文件坏了,导致数据库 crash 了,然后现场工程师使用_ALLOW_RESETLOGS_CORRUPTION = TRUE 这个隐含参数,做了不完全恢复后强行将数据库打开。可是打开数据库后发现只能用 internal 用户连接进去,别的用户连接都报错,错误信息如下:

ORA-00600: internal error code, arguments: [2662], [0], [431267936], [0], [431273216], [0], [], []

查询不了任何应用的表,应用也没法使用,于是想尝试全库的 exp 出来然后重新 imp 进去建库,结果发现 exp 数据也不成功,也是报同样的 ORA-600 的错误,用户当时数据没有任何的备份过,只能想办法尽量打开数据库,导出数据了。

处理过程:

先检查了 600 错误产生的 trace 文件:

*** SESSION ID:(7.15) 2004.11.23.23.28.16.824
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [2662], [0], [431267754], [0], [431272752], [0], [], []
Current SQL statement for this session:
SELECT * FROM “WHSB”.”SB_BSBF”

得到的信息有限,只能看到是严重内部错误,剩下的都是内存堆栈的一堆信息,于是查找了一下这个错误的具体相关信息。

ORA-600 [2662] “Block SCN is ahead of Current SCN”,说明当前数据库的数据块的 SCN 早于当前的 SCN,主要是和存储在 UGA 变量中的 dependent SCN 进行比较,如果当前的 SCN 小于它,数据库就会产生这个 ORA-600 [2662] 的错误了。这个错误一共有五个参数,分别代表不同的含义,

ORA-600 [2662] [a] [b] [c] [d] [e]

Arg [a] Current SCN WRAP

Arg [b] Current SCN BASE

Arg [c] dependent SCN WRAP

Arg [d] dependent SCN BASE

Arg [e] Where present this is the DBA where the dependent SCN came from.

我们分析错误中的提示,它的参数 b =431267754,d=431272752, 表明当前的 SCN 确实是小于 dependent SCN,所以产生了这个 600 的错误。

通过查阅文档,发现这个错误的产生原因主要有以下几条:

1. 使用隐含参数_ALLOW_RESETLOGS_CORRUPTION 后 resetlogs 打开数据库

2. 硬件错误引起数据库没法写控制文件和重做日志文件

3. 错误的部分恢复数据库

4. 恢复了控制文件但是没有使用 recover database using backup controlfile 进行恢复

5. 数据库 crash 后设置了_DISABLE_LOGGING 隐含参数

6. 在并行服务器环境中 DLM 存在问题

仔细对比了一下,发现问题可能是由于第一条产生的,由于设置了_ALLOW_RESETLOGS_CORRUPTION 这个隐含参数后,虽然强制性的打开数据库,但是数据库本身存在了 corruption,仍然存在严重的问题。

于是想到使用 ADJUST_SCN 事件来调整当前的 SCN,使其大于 dependent SCN,然后保证数据库可以全库的导出,然后重建数据库导入数据。

用 internal 用户登陆数据库后,连接别的用户,还是失败报错,执行:

alter session set events ‘IMMEDIATE trace name ADJUST_SCN level 1’;

然后尝试连接别的用户,连接成功。

最后 exp 整个数据库,重建数据库后导入数据,整个数据库恢复成功!

通过这个实例,我们可以看到,尽量的不要去使用那些隐含参数,这些参数是 oracle 所不推荐使用的,也不是万能的!如果使用了可能会存在一些遗留的问题,如果非要使用,建议使用后一定要 exp/imp 重建建立数据库。

更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-02/141079.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1839字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中