Oracle数据库一般在高并发写入的业务系统中,例如一些流水账单或日志写入业务,若程出现意外断电,将会破坏数据文件的一致性,从而导致数据库无法启动,如这个时候,客户本身没有开启RMAN数据库备份或逻辑备份,并且数据库处于非归档状态,将会很被动,下面将通过非常规的方法来恢复数据库,用该方法恢复后,由于破坏了数据库本身的一致性,应通过导出导入操作来重建实例。

数据库意外断电或系统崩溃,如果没有有效RMAN全备份,数据库无法打开,报以下错误:

SQL> alter database open resetlogs;

alter database open resetlogs

*1 行出现错误:

ORA-01194: 文件 1 需要更多的恢复来保持一致性

ORA-01110: 数据文件 1: 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\MYORACLE\SYSTEM01.DBF'

由于无RMAN备份,无法进行recover等传统操作,这种时候只能在recover database until cancel后,用open resetlogs尝试打开,但此时由于数据不一致,无法打开!

这种情况,可通过隐含参数_allow_resetlogs_corruption=TRUE强制打开

SQL> alter system set  "_allow_resetlogs_corruption"=true scope=spfile;

系统已更改。

SQL> shutdown immediate;

ORA-01109: 数据库未打开

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。

Total System Global Area  524288000 bytes

Fixed Size                   789692 bytes

Variable Size             497808196 bytes

Database Buffers           25165824 bytes

Redo Buffers                 524288 bytes

数据库装载完毕。

ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

SQL> alter database open resetlogs;

alter database open resetlogs

*1 行出现错误:

ORA-03113: 通信通道的文件结束

遭遇ORA-00600: 内部错误代码, 参数: [2662]错误

查看日志:

MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set

Thu Jun 10 11:43:44 2010

SMON: enabling cache recovery

Thu Jun 10 11:43:45 2010

Errors in file d:\oracle\product\10.1.0\admin\myoracle\udump\myoracle_ora_90368.trc:

ORA-00600: 内部错误代码, 参数: [2662], [0], [52373651], [0], [52377759], [29360137], [], []

Thu Jun 10 11:43:48 2010

Errors in file d:\oracle\product\10.1.0\admin\myoracle\udump\myoracle_ora_90368.trc:

ORA-00600: 内部错误代码, 参数: [2662], [0], [52373651], [0], [52377759], [29360137], [], []

Thu Jun 10 11:43:48 2010

Error 600 happened during db open, shutting down database

USER: terminating instance due to error 600

Thu Jun 10 11:43:48 2010

Errors in file d:\oracle\product\10.1.0\admin\myoracle\bdump\myoracle_pmon_88840.trc:

ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], []

在数据库Open过程中,Oracle会跳过某些一致性检查,从而使数据库可能跳过不一致状态,Open打开,如果不幸运的话会得到如上【2662】的错误

ORA-00600 2662号错误,这个错误的含义是:

data block SCN is ahead of the current SCN.

The ORA-600 [2662] occurs when an SCN is compared to the dependent SCN

stored in a UGA variable.

If the SCN is less than the dependent SCN then we signal the ORA-600 [2662]

internal error.

在ORA-00600很多时候使用隐含参数_ALLOW_RESETLOGS_CORRUPTION后resetlogs打开数据库,我们可能会由于SCN不一致而遭遇到ORA-00600 2662号错误,这里给出一个完整的解决过程。

通过正常方式启动数据库时,从alert文件中,我们可以看到ora-00600 2662号错误。

Sun Dec 11 18:02:25 2015

Errors in file /opt/oracle/admin/conner/udump/conner_ora_13349.trc:

ORA-00600: internal error code, arguments: [2662], [0], [547743994], [0], [898092653], [8388617], [], []

Sun Dec 11 18:02:27 2015

Errors in file /opt/oracle/admin/conner/udump/conner_ora_13349.trc:

ORA-00600: internal error code, arguments: [2662], [0], [547743994], [0], [898092653], [8388617], [], []

Sun Dec 11 18:02:27 2015

Error 600 happened during db open, shutting down database

USER: terminating instance due to error 600

此时我们可以通过Oracle的内部事件来调整SCN:

增进SCN有两种常用方法:

1.通过immediate trace name方式(在数据库Open状态下)

alter session set events 'IMMEDIATE trace name ADJUST_SCN level x';

2.通过10015事件(在数据库无法打开,mount状态下)

alter session set events '10015 trace name adjust_scn level x';

注:level 1为增进SCN 10亿 (1 billion) (102410241024),通常Level 1已经足够。也可以根据实际情况适当调整。

本例由于数据库无法打开,只能使用的二种方法。

[oracle@jumper dbs]$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.2.0.4.0 - Production on Sun Dec 11 18:26:18 2015

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to an idle instance.

SQL> startup mount pfile=initconner.ora

ORACLE instance started.

Total System Global Area   97588504 bytes

Fixed Size                   451864 bytes

Variable Size              33554432 bytes

Database Buffers           62914560 bytes

Redo Buffers                 667648 bytes

Database mounted.

SQL> alter session set events '10015 trace name adjust_scn level 10';

Session altered.

SQL> alter database open;

Database altered.

此时数据库有可能可以打开,但大部分情况下,仍然会报【2662】错误,数据库依然无法打开,从alert文件中我们可以看到[2662]报错依然出现!

此时可用下面方法解决(多次亲测有效):



天凯科技-数据库技术支持
7*24小时提供数据库运维与优化服务,十年DBA实战经验,长期服务于国内关键行业,深受好评!
服务热线/微信:13926108245
本企业定期分享DBA实战处理经验,同时分享精品视频教程,更多资源请点击访问"天凯运维资讯"获得!

温馨提示! 你需要支付 ¥28.00 元后才能查看付费内容
点赞(94) 打赏

评论列表 共有 0 条评论

暂无评论

企业微信号

微信扫一扫咨询

微信公众号

关注我们,定期优惠

立即
投稿
发表
评论
返回
顶部
展开