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

这又是一个一天一度的吃饭季节,天气闷热,心里有点儿抑郁。


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

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


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

过了一会儿,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

转载请注明出处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值