備份與恢復--重建控制檔案
恢復辦法適用於:
控制檔案全部丟失且沒有備份
前提條件:
資料庫如果是乾淨的關閉的,就可以用noresetlogs方式開啟資料庫,否則用resetlogs開啟。
方法:
如果在最後一次資料庫結構修改後使用了ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS命令備份了建立控制檔案的指令碼,則可以直接用TRACE檔案中的指令碼進行控制檔案的重建。
如果使用ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS命令之後又進行了資料庫結構的修改,則需要手工編輯TRACE檔案中的指令碼,來反映出資料庫最後的修改。
如果是使用的ALTER DATABASE BACKUP CONTROLFILE TO FILENAME方式進行的備份(這種情況其實應該算作有備份的情況,不過如果利用備份進行恢復需要使用RESETLOGS方式開啟資料庫),則可以利用備份的控制檔案首先將資料庫STARTUP MOUNT,然後再利用ALTER DATABASE BACKUP
CONTROLFILE TO TRACE NORESETLOGS命令備份建立控制檔案的指令碼,最後將備份控制檔案後所有資料庫結構的修改,反映到控制檔案的指令碼上。
如果控制檔案沒有任何方式的備份,那麼只能透過手工方式編寫CREATE CONTROLFILE語句,這時候需要了解所有資料檔案和聯機重做日誌檔案的位置和大小。
[@more@]SQL> alter database backup controlfile to trace;
Database altered.
SQL> select spid from v$process
2 where addr=
3 (select paddr from v$session
4 where sid=(select sid from v$mystat where rownum=1)
5 );
SPID
------------
23724
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> host mv /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/oradata/orcl/control01.bak
SQL> host mv /u01/app/oracle/oradata/orcl/control02.ctl /u01/app/oracle/oradata/orcl/control02.bak
SQL> host mv /u01/app/oracle/oradata/orcl/control03.ctl /u01/app/oracle/oradata/orcl/control03.bak
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 335544320 bytes
Fixed Size 1219280 bytes
Variable Size 134219056 bytes
Database Buffers 197132288 bytes
Redo Buffers 2973696 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log' SIZE 50M,
9 GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log' SIZE 50M,
10 GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log' SIZE 50M
11 -- STANDBY LOGFILE
12 DATAFILE
13 '/u01/app/oracle/oradata/orcl/system01.dbf',
14 '/u01/app/oracle/oradata/orcl/undotbs01.dbf',
15 '/u01/app/oracle/oradata/orcl/sysaux01.dbf',
16 '/u01/app/oracle/oradata/orcl/users01.dbf',
17 '/u01/app/oracle/oradata/orcl/example01.dbf',
18 '/u01/app/oracle/oradata/orcl/jglu01.dbf',
19 '/u01/app/oracle/oradata/orcl/jglu02.dbf',
20 '/u01/app/oracle/oradata/orcl/test02.dbf'
21 CHARACTER SET WE8ISO8859P1
22 ;
Control file created.
SQL> RECOVER DATABASE
ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required
SQL> ALTER SYSTEM ARCHIVE LOG ALL;
System altered.
SQL> ALTER DATABASE OPEN;
Database altered.
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf'
2 SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
Tablespace altered.
按照trace出來的資訊一步步做就行了。
上面RECOVER DATABASE步驟的錯誤描述資訊是資料庫不需要恢復。因此,直接忽略這個錯誤。
需要注意的是,這個方法適用於聯機重做日誌存在情況下的恢復。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-1016108/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 備份與恢復--重建控制檔案後資料檔案損壞的恢復
- 備份與恢復--利用備份的控制檔案恢復
- 備份與恢復系列 十一 控制檔案的備份與恢復
- 【備份恢復】利用 備份控制檔案到指定目錄下的控制檔案 恢復控制檔案
- 【備份與恢復】控制檔案的恢復(不完全恢復)
- Oracle備份與恢復【丟失控制檔案的恢復】Oracle
- oralce備份與恢復1 控制檔案(轉)
- 【rman 備份與恢復】恢復丟失所有的控制檔案
- 【備份與恢復】恢復受損的複用控制檔案
- 控制檔案重建以及備份
- 【備份恢復】 控制檔案多路徑
- 利用備份的控制檔案恢復
- 控制檔案的備份和恢復
- 備份與恢復(Parameter 檔案恢復篇)
- RMAN備份恢復之控制檔案的恢復(三)
- RMAN備份恢復之控制檔案的恢復(二)
- RMAN備份恢復之控制檔案的恢復(一)
- 使用舊的控制檔案備份來恢復控制檔案
- 【備份恢復】所有控制檔案丟失後 利用trace中的控制檔案備份執行恢復
- rman備份丟失控制檔案恢復
- 循序漸進oracle第7章:備份與恢復之利用控制檔案快照恢復控制檔案Oracle
- 備份與恢復系列 十 引數檔案spfile的備份與恢復
- trace檔案備份控制檔案並執行恢復
- 重建控制檔案的恢復(noresetlogs)
- 備份與恢復--重新控制檔案資料字典和控制檔案不一致的恢復
- rman備份-(1) 利用備份級恢復資料檔案和控制檔案
- 【備份與恢復】恢復受損的口令檔案
- 【備份恢復】 丟失一個控制檔案 之恢復操作
- 【管理篇備份恢復】rman恢復測試(二) 控制檔案恢復(三)
- 【管理篇備份恢復】rman恢復測試(二) 控制檔案恢復(二)
- 【管理篇備份恢復】rman恢復測試(二) 控制檔案恢復(一)
- 【備份與恢復】重建受損的聯機重做日誌檔案成員
- Oracle 11g RAMN恢復-控制檔案的備份和恢復Oracle
- 使用備份的控制檔案恢復資料庫資料庫
- 備份&恢復之十三:損壞全部控制檔案
- RMAN基於備份控制檔案恢復失敗
- 恢復之丟失全部控制檔案以及備份中的控制檔案
- Oracle備份與恢復【丟失資料檔案的恢復】Oracle