undo tablespace 丢失,数据库无法打开


oracle 10g 丢失undo表空间,导致数据库在打开的时,一直报ora-600[kcbgtcr_13]错误,数据库无法打开,通过如下办法可以打开。
应该是碰到bug了。


C:\>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 9月 1 14:40:58 2010

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

SQL> conn sys/test as sysdba
已连接。
SQL> create table a as select * from dba_objects;

表已创建。

SQL> insert into a select * from a;

已创建49745行。

SQL> /

已创建99490行。

SQL> /

已创建198980行。

SQL> shutdown abort
ORACLE 例程已经关闭。

**************************
中间操作:

删除数据库的undo datafile
**************************

 

SQL> conn sys/test as sysdba
已连接。
SQL> startup
ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它
SQL> shutdown immediate
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  608174080 bytes
Fixed Size                  1250404 bytes
Variable Size             163580828 bytes
Database Buffers          436207616 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 2 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 2: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST2\UNDOTBS01.DBF'


SQL> alter database datafile 2 offline drop;

数据库已更改。

SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      D:\ORACLE\PRODUCT\10.2.0\DB_1\
                                                 DBS\SPFILETEST2.ORA
SQL> create pfile from spfile;

文件已创建。

***********************************
编辑PFILE中的内容

*.undo_management='MANUAL'
*.undo_tablespace='SYSTEM'
*._allow_resetlogs_corruption=true
*._corrupted_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)

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


已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  608174080 bytes
Fixed Size                  1250404 bytes
Variable Size             163580828 bytes
Database Buffers          436207616 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
SQL> recover database using backup controlfile
ORA-00279: 更改 546344 (在 09/01/2010 14:39:08 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\PRODUCT\10.2.0\DB_1\RDBMS\ARC00002_0728577477.001
ORA-00280: 更改 546344 (用于线程 1) 在序列 #2 中


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。
SQL> alter database open resetlogs upgrade;

数据库已更改。

SQL>
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

重启数据库变可以

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  608174080 bytes
Fixed Size                  1250404 bytes
Variable Size             163580828 bytes
Database Buffers          436207616 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

作者: drew   发布时间: 2010-09-02