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
数据库装载完毕。
数据库已经打开。