天天看點

【控制檔案丢失恢複】

oracle文檔裡有這麼一個案例,我整理了一下:

1.        設定ORACLE_SID

export ORACLE_SID=central

2.        啟動RAMN

rman TARGET / NOCATALOG

3. 設定DBID

SET DBID 1331322689;

4. 啟動資料庫(no mount狀态)

STARTUP NOMOUNT

會出現以下資訊

startup failed: ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/net/hostb/oracle/dbs/inittrgta.ora'

trying to start the Oracle instance without parameter files ...

Oracle instance started

#5. 恢複參數檔案

  RESTORE SPFILE TO PFILE '?/oradata/test/inittrgta.ora' FROM AUTOBACKUP;

  SHUTDOWN ABORT;

#6. 編輯參數檔案中的檔案路徑

如路徑和原來一樣,則不需修改

eg:

  - *_DUMP_DEST

  - LOG_ARCHIVE_DEST*

  - CONTROL_FILES

#7. 重新開機執行個體,使用已編輯好的參數檔案

STARTUP FORCE NOMOUNT PFILE='?/oradata/test/inittrgta.ora';

8.恢複控制檔案,裝載資料庫

  RESTORE CONTROLFILE FROM AUTOBACKUP;

  ALTER DATABASE MOUNT;

9.查詢記錄在控制檔案中的資料檔案資訊

        % sqlplus '/ AS SYSDBA'

SQL> COLUMN NAME FORMAT a60

SQL> SPOOL LOG 'db_filenames.out'

SQL> SELECT FILE# AS "File/Grp#", NAME FROM V$DATAFILE

     UNION

     SELECT GROUP#,MEMBER FROM V$LOGFILE;

SQL> SPOOL OFF

10.資料庫恢複

        如果路徑和原來的一樣,則不需要指定資料檔案的恢複路徑

        RUN

{

  # rename the datafiles and online redo logs

  SET NEWNAME FOR DATAFILE 1 TO '?/oradata/test/system01.dbf';

  SET NEWNAME FOR DATAFILE 2 TO '?/oradata/test/undotbs01.dbf';

  SET NEWNAME FOR DATAFILE 3 TO '?/oradata/test/cwmlite01.dbf';

  SET NEWNAME FOR DATAFILE 4 TO '?/oradata/test/drsys01.dbf';

  SET NEWNAME FOR DATAFILE 5 TO '?/oradata/test/example01.dbf';

  SET NEWNAME FOR DATAFILE 6 TO '?/oradata/test/indx01.dbf';

  SET NEWNAME FOR DATAFILE 7 TO '?/oradata/test/tools01.dbf';

  SET NEWNAME FOR DATAFILE 8 TO '?/oradata/test/users01.dbf';

  SQL "ALTER DATABASE RENAME FILE ''/dev3/oracle/dbs/redo01.log''

      TO ''?/oradata/test/redo01.log'' ";

  SQL "ALTER DATABASE RENAME FILE ''/dev3/oracle/dbs/redo02.log''

      TO ''?/oradata/test/redo02.log'' ";

  # Do a SET UNTIL to prevent recovery of the online logs

  #SET UNTIL SCN 123456;

# restore the database and switch the datafile names

  RESTORE DATABASE;

  SWITCH DATAFILE ALL;

  # recover the database

  RECOVER DATABASE;

}

11.以重置日志的方式打開資料庫

        ALTER DATABASE OPEN RESETLOGS;