您的位置:首页 > 其它

ORA-00600 Recovery of Online Redo Log: Thread 1 Group 2 Seq 128 Reading mem 0 错误特殊恢复

2013-07-26 14:37 549 查看
这又是一个一天一度的吃饭季节,天气闷热,心里有点儿抑郁。

突然公司停电了,难道供电的设备也午休了吗?

过了几分钟,供电设备休息完毕也开始正常供电了,跟我一样也真够准时的。

一切尽在掌握中,服务器自动开机,然后迷途小运维起按顺序起相关的服务,一如既往。

过了一会儿,XX的同鞋们高兴的说XXX数据库连不上,是不是没起实例呀??

然后我抑郁的告诉他们,实例我起来好久了,并且边信心百倍的说着,边去查看实例状态

oracle@oracle:~$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on 星期五 7月 26 06:08:24 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

已连接到空闲例程。

SQL>

当时我就抑郁了,难道我是做梦启的么???

索性又startup一次!

我这次聪明了,是十分聪明了,我去看altre log

tail -30f alert_SEM.log

所有的信息欢快的在屏幕上跳动这,突然扫到一串让我感觉比较凄凉的字符串

ORA-00600: 内部错误代码, 参数: [4194], [20], [29], [], [], [], [], [], [], [], [], []

然后CTRL+C之后再

ps -ef|grep oracle|wc -l

4

额,神码情况???

于是决定详细查看alert日志,有如下发现

Thu Jul 25 08:27:35 2013

Doing block recovery for file 3 block 3683

Resuming block recovery (PMON) for file 3 block 3683

Block recovery from logseq 128, block 64 to scn 1878635

Thu Jul 25 08:27:35 2013

Recovery of Online Redo Log: Thread 1 Group 2 Seq 128 Reading mem 0

  Mem# 0: /oracle/oradata/SEM/redo02.log

Block recovery completed at rba 128.82.16, scn 0.1878637

Errors in file /oracle/diag/rdbms/sem/SEM/trace/SEM_pmon_3796.trc  (incident=57730):

ORA-00600: 内部错误代码, 参数: [4194], [20], [29], [], [], [], [], [], [], [], [], []

主要是数据库恢复rba 128.82.16, scn 0.1878637的时候,出现ora-600[4194],主要是指redo和undo的信息不一致

经过迷途小运维一番咨询下边是专家给出的思路

1. 换成undo 为manual,看看是否可以启动,如果可以,然后创建undo表空间,删除老undo,重启库

2. 如果不能启动,设置event,然后对undo表空间操作

3. 如果上面步骤都不行,直接使用undo隐含参数,屏蔽undo异常回滚段,删除异常回滚段

有思路了,那么下边开始按步骤以进行恢复

首先将undo_management改成manual 

undo_management参数详解:初始化参数UNDO_MANAGEMENT用于指定系统要使用的UNDO管理模式,默认值为AUTO。当设置该参数为AUTO时,  系统会使用UNDO表空间管理UNDO数据;当设置该参数为MANUAL时,系统会使用回滚段管理UNDO数据。

SQL> alter system set undo_management=manual scope=spfile; //由于是初始化值,所有得加上scope=spfile

SQL> shutdown immediate //重启数据库使得参数生效

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 1670221824 bytes

Fixed Size                  2361784 bytes

Variable Size            1006634568 bytes

Database Buffers          654311424 bytes

Redo Buffers                6914048 bytes

数据库装载完毕。

数据库已经打开。

SQL> !

oracle@oracle:/oracle/diag/rdbms/sem/SEM/trace$ tail -30f alert_SEM.log  //查看alert log 未出错

oracle@oracle:/oracle/diag/rdbms/sem/SEM/trace$ exit

exit

SQL>

SQL>

SQL> show parameter undo;  //查看undo使用情况

NAME                                 TYPE

------------------------------------ ---------------------------------

VALUE

------------------------------

temp_undo_enabled                    boolean

FALSE

undo_management                      string

MANUAL

undo_retention                       integer

900

undo_tablespace                      string

UNDOTBS1

SQL> create undo tablespace UNDOTP datafile '/oracle/oradata/SEM/UNDOTP01.dbf' size 50M;  //创建新的undo表空间

表空间已创建。

SQL> alter system set undo_tablespace=UNDOTP;    //更改系统使用新的UNDO表空间

alter system set undo_tablespace=UNDOTP

*

第 1 行出现错误:

ORA-02097: 无法修改参数, 因为指定的值无效 ORA-30014:          //这儿意思是只有undo_management=auto的时候这个值才可以不用加scope=spfile就可以更改

此操作仅在自动还原管理模式中才受支持

SQL> alter system set undo_tablespace=UNDOTP scope=spfile; //更改undo表空间到初始化值

系统已更改。

SQL> shutdown immediate  //重启实例,让undo_tablespace值生效

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 1670221824 bytes

Fixed Size                  2361784 bytes

Variable Size            1006634568 bytes

Database Buffers          654311424 bytes

Redo Buffers                6914048 bytes

数据库装载完毕。

数据库已经打开。

SQL> alter system set undo_management=auto scope=spfile;  //更改undo_management值为auto

系统已更改。

SQL> drop tablespace UNDOTBS1;  //然后删除老的undo表空间

表空间已删除。

SQL> shutdown immediate    //重启实例,使得undo_management值生效

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 1670221824 bytes

Fixed Size                  2361784 bytes

Variable Size            1006634568 bytes

Database Buffers          654311424 bytes

Redo Buffers                6914048 bytes

数据库装载完毕。

数据库已经打开。

SQL> show parameter undo;

NAME                                 TYPE

------------------------------------ ---------------------------------

VALUE

------------------------------

temp_undo_enabled                    boolean

FALSE

undo_management                      string

AUTO

undo_retention                       integer

900

undo_tablespace                      string

UNDOTP

至此,就算全部都OK了,一切还是那么美好!!!

**********************************************

数据库mount后删除undo表空间

alter tablespace undotbs1 offline

**********************************************

#############################################

本文属笔者原创

作者:john

转载请注明出处
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐