计算Oracle8i 的UNDO表空间损坏(ORA-01092及ORA-00600【4193】)情形下的数据库不完全恢复生机的经验

服务器断电重启发引导致备份生产环境的复苏目录库不可能举行运转,提醒Ora-01092例程终止。强行断开连接

查阅跟踪日志:

Wed Jan 10 08:41:37 2018

Errors in file d:\Oracle\admin\l3bckdb\bdump\l3bckdbSMON.TRC:

ORA-00600: internal error code, arguments: [4193], [1836], [1844],
[], [], [], [], []

 

Wed Jan 10 08:41:39 2018

Errors in file d:\Oracle\admin\l3bckdb\bdump\l3bckdbSNP1.TRC:

ORA-00600: internal error code, arguments: [4193], [1926], [1934],
[], [], [], [], []

 

Recovery of Online Redo Log: Thread 1 Group 3 Seq 15 Reading mem 0

  Mem# 0 errs 0: D:\ORACLE\ORADATA\L3BCKDB\REDO01.LOG

Wed Jan 10 08:41:42 2018

Recovery of Online Redo Log: Thread 1 Group 3 Seq 15 Reading mem 0

  Mem# 0 errs 0: D:\ORACLE\ORADATA\L3BCKDB\REDO01.LOG

Wed Jan 10 08:41:42 2018

SMON: terminating instance due to error 600

Instance terminated by SMON, pid = 2744

 图片 1

 

追寻有关资料,发现RA-600[4913]错误的2个argument的含义,
该ORA-600[4913]属于内核undo事务模块

[1836] Undo record seq number

[1844] Redo record seq number

鉴于UNDO系列和REDO系列分歧引发错误。

解决办法:重建UNDO表空间,步骤如下:

C:/>set nls_lang=american_america.zhs16gbk

C:/>sqlplus “/ as sysdba”

SQL*Plus: Release 8.1.7.0.0 – Production on 星期三 1月 10 11:28:47 2018

(c) Copyright 2000 Oracle Corporation. All rights reserved.

 

连接到:

 Oracle8i Enterprise Edition Release 8.1.7.0.0  – Production

With the Partitioning option

JServer Release 8.1.7.0.0 – Production

 图片 2

SQL> select file#,name from v$datafile where file#=2;

FILE# NAME


2 D:/ORACLE/ORADATA/BCCHECK/RBS01.DBF

SQL> shutdown immediate

ORA-01109: 数据库未打开。

 

现已卸载数据库。

ORACLE例程已关闭。

 

将init.ora文件中的ROLLBACK_SE维生霉素ENTS初阶化参数设置注释后以Restricted方式MOUNT数据库。

#rollback_segments = ( RBS0, RBS1, RBS2, RBS3, RBS4, RBS5, RBS6 )

SQL> startup restrict mount

ORACLE例程已开行。

Total System Global Area 219895052 bytes

Fixed Size 70924 bytes

Variable Size 75116544 bytes

Database Buffers 144629760 bytes

Redo Buffers 77824 bytes

数据库装载完结。

 

在线drop损坏的rbs数据文件,然后重试打开数据库

 图片 3

 

 

 

SQL> drop tablespace rbs including contents;

drop tablespace rbs including contents

*

ERROR 在行 1:

ORA-01548: active rollback segment ‘RBS0’ found, terminate dropping
tablespace

— 报错ORA-01548,注解有活动回滚段

 

SQL> select segment_name,tablespace_name,status from
dba_rollback_segs;

SEGMENT_NAME TABLESPACE_NAME STATUS



SYSTEM SYSTEM ONLINE

RBS0 RBS NEEDS RECOVERY

RBS1 RBS NEEDS RECOVERY

RBS2 RBS NEEDS RECOVERY

RBS3 RBS NEEDS RECOVERY

RBS4 RBS NEEDS RECOVERY

RBS5 RBS NEEDS RECOVERY

RBS6 RBS NEEDS RECOVERY

已选择8 行

SQL> shutdown immediate


不荒谬关闭数据库插手富含函数_corrupted_rollback_segments,修改参数文件加入富含参数

_corrupted_rollback_segments=(RBS0,RBS1,RBS2,RBS3,RBS4,RBS5,RBS6)后以restricted情势打开数据库

SQL> startup restrict

SQL> select segment_name,tablespace_name,status from
dba_rollback_segs;

SEGMENT_NAME TABLESPACE_NAME STATUS



SYSTEM SYSTEM ONLINE

RBS0 RBS NEEDS RECOVERY

RBS1 RBS NEEDS RECOVERY

RBS2 RBS NEEDS RECOVERY

RBS3 RBS NEEDS RECOVERY

RBS4 RBS NEEDS RECOVERY

RBS5 RBS NEEDS RECOVERY

RBS6 RBS NEEDS RECOVERY

已选择 8 行

SQL> drop tablespace rbs including contents;

drop tablespace rbs including contents

*

ERROR 在行 1:

ORA-01548: active rollback segment ‘RBS0’ found, terminate dropping
tablespace

强制删除所急需的回滚段

 图片 4

 

 

除去包蕴损坏回滚段表空间后,并伊始建立回滚段表空间

 图片 5

 

 

查询回滚段状态

 图片 6

 

正规关闭数据库,并将参数文件中的隐含参数_corrupted_rollback_segments注释,并将ROLLBACK_SE林大霉素ENTS插足全部的回滚段。

 图片 7

 

健康运转数据库

 图片 8