带你深入了解回滚表空间丢失的解决方法

来源:岁月联盟 编辑:zhuzhu 时间:2008-01-28

问题:Oracle数据库的undotbs01.dbf文件损坏?

解决方法如下:

首先,我们需要模拟这个错误,方法是将undotbs01.dbf移到其它目录下,然后再来进行修正,过程如下:

SQL> startupORACLE instance started.Total System Global Area  135338868 bytesFixed Size                   453492 bytesVariable Size             109051904 bytesDatabase Buffers           25165824 bytesRedo Buffers                 667648 bytesDatabase mounted.ORA-01157: cannot identify/lock data file 2 - see DBWR trace fileORA-01110: data file 2: ''D:/ORACLE/ORADATA/ORCL/UNDOTBS01.DBF''SQL> alter system set undo_management=''MANUAL'' scope=spfile;System altered.SQL> alter database datafile ''d:/oracle/oradata/orcl/undotbs01.dbf'' offline drop;Database altered.SQL> alter database open;Database altered.SQL>

现在,此数据库已经能正常启动,但是还是没有达到我们的要求,因为在Oracle9i以后的版本建议用undo表空间来代替回滚段,现在我们需要将其设置为undo表空间。

SQL>create undo tablespace undotbs2 datafile ''d:/oracle/oradata/orcl/undotbs02.dbf'' size 100M;Tablespace created.SQL> select * from v$tablespace;       TS# NAME                           INC---------- ------------------------------ ---         3 CWMLITE                        YES         4 DRSYS                          YES         5 EXAMPLE                        YES         6 INDX                           YES         7 ODM                            YES         0 SYSTEM                         YES         8 TOOLS                          YES         1 UNDOTBS1                       YES         9 USERS                          YES        10 XDB                            YES         2 TEMP                           YES       TS# NAME                           INC---------- ------------------------------ ---        11 UNDOTBS2                       YES12 rows selected.SQL> alter system set undo_management=''AUTO'' scope=spfile;System altered.SQL> alter system set undo_tablespace=''UNDOTBS2'' scope=spfile;System altered.SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started.Total System Global Area  135338868 bytesFixed Size                   453492 bytesVariable Size             109051904 bytesDatabase Buffers           25165824 bytesRedo Buffers                 667648 bytesDatabase mounted.Database opened.SQL> show parameter undoNAME                                 TYPE        VALUE------------------------------------ ----------- -----undo_management                      string      AUTOundo_retention                       integer     10800undo_suppress_errors                 boolean     FALSEundo_tablespace                      string      UNDOTBS2SQL>

此时,数据库成功启动。