DATA GUARD主庫丟失資料檔案的恢復(1)
在DATAGUARD中,主庫丟失檔案時,有多種恢復方式可選:
1、從備庫複製相關檔案到主庫上恢復
2、複製備庫備份到主庫還原恢復
3、從主庫備份還原恢復
本文主要討論10G DATAGUARD中,主庫丟失資料檔案時,用複製備庫對應的資料檔案方式恢復主庫。
這種方法要分兩種情況討論:
一、備庫檔案SCN號比主庫控制檔案新
這種情況下需要重建控制檔案來解決。
導致這種情況一般是主庫出現故障時,備庫正處於恢復狀態。
1、模擬主庫丟失檔案
SQL> shutdown immediate
ORA-01116: error in opening database file 1
ORA-01110: data file 1: '/u01/oracle/oradata/primary/system01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1260696 bytes
Variable Size 109052776 bytes
Database Buffers 54525952 bytes
Redo Buffers 2932736 bytes
Database mounted.
2、從備庫複製相關檔案到主庫
首先關閉備庫
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
複製檔案
[oracle@standby primary]$ scp system01.dbf 10.2.98.10:`pwd`
oracle@10.2.98.10's password:
system01.dbf 100% 300MB 2.7MB/s 01:51
3、嘗試recover丟失的檔案
SQL> recover datafile 1;
ORA-00283: recovery session canceled due to errors
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '/u01/oracle/oradata/primary/system01.dbf'
ORA-01207: file is more recent than control file - old control file
失敗。這時,因為沒有備份,只能透過重建主庫控制檔案的方式解決。
4、在主庫生成檔案格式的控制檔案
SQL> alter database backup controlfile to trace;
Database altered.
5、重建控制檔案
注意:必須要選擇NORESETLOGS的方式,否則備庫可能會需要重建。
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> CREATE CONTROLFILE REUSE DATABASE "PRIMARY" NORESETLOGS FORCE LOGGING ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 '/u01/oracle/oradata/primary/redo01.log' SIZE 50M,
9 GROUP 2 '/u01/oracle/oradata/primary/redo02.log' SIZE 50M,
10 GROUP 3 '/u01/oracle/oradata/primary/redo03.log' SIZE 50M
11 --STANDBY LOGFILE
12 --GROUP 4 '/u01/oracle/oradata/primary/standbyredo04.log' SIZE 50M,
13 --GROUP 5 '/u01/oracle/oradata/primary/standbyredo5.log' SIZE 50M,
14 --GROUP 6 '/u01/oracle/oradata/primary/standbyredo6.log' SIZE 50M,
15 --GROUP 7 '/u01/oracle/oradata/primary/standbyredo7.log' SIZE 50M
16 DATAFILE
17 '/u01/oracle/oradata/primary/system01.dbf',
18 '/u01/oracle/oradata/primary/undotbs01.dbf',
19 '/u01/oracle/oradata/primary/sysaux01.dbf',
20 '/u01/oracle/oradata/primary/users01.dbf'
21 CHARACTER SET ZHS16GBK
22 ;
Control file created.
6、恢復資料庫
SQL> recover database;
ORA-00279: change 163941 generated at 06/27/2007 23:26:11 needed for thread 1
ORA-00289: suggestion : /u01/archivelog/1_41_626106231.arc
ORA-00280: change 163941 for thread 1 is in sequence #41
Specify log: {
auto
ORA-00279: change 164058 generated at 06/27/2007 23:27:13 needed for thread 1
ORA-00289: suggestion : /u01/archivelog/1_42_626106231.arc
ORA-00280: change 164058 for thread 1 is in sequence #42
ORA-00278: log file '/u01/archivelog/1_41_626106231.arc' no longer needed for
this recovery
......
......
ORA-00279: change 166472 generated at 06/30/2007 00:18:54 needed for thread 1
ORA-00289: suggestion : /u01/archivelog/1_48_626106231.arc
ORA-00280: change 166472 for thread 1 is in sequence #48
ORA-00278: log file '/u01/archivelog/1_47_626106231.arc' no longer needed for
this recovery
Log applied.
Media recovery complete.
SQL> ALTER SYSTEM ARCHIVE LOG ALL;
System altered.
7、開啟主庫
SQL> alter database open;
Database altered.
8、為主庫新增臨時檔案
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/oracle/oradata/primary/temp01.dbf' REUSE;
Tablespace altered.
至此,主庫恢復完成。
二、備庫檔案SCN號比主庫控制檔案舊
一般情況下,如果主庫故障時,備庫正處於只讀狀態,那麼,備庫的資料檔案SCN一般會比主庫小。
這種情況比較簡單,把丟失的資料檔案從備庫複製到主庫後執行recover就可以了。
1、刪除主庫資料檔案,模擬故障
SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1260696 bytes
Variable Size 121635688 bytes
Database Buffers 41943040 bytes
Redo Buffers 2932736 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/u01/oracle/oradata/primary/system01.dbf'
2、從備庫複製相關檔案到主庫
首先關閉備庫
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
複製檔案
[oracle@standby primary]$ scp system01.dbf 10.2.98.10:`pwd`
oracle@10.2.98.10's password:
system01.dbf 100% 300MB 2.7MB/s 01:51
3、返回主庫,執行recover
SQL> recover datafile 1;
Media recovery complete.
4、開啟主庫
SQL> alter database open;
Database altered.
恢復完成。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63830/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DATA GUARD主庫丟失資料檔案的恢復(2)
- DATA GUARD主庫丟失資料檔案的恢復(3)
- 資料檔案丟失的恢復
- 資料檔案丟失如何恢復
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- 完全恢復之所有資料庫檔案丟失資料庫
- 資料庫各種檔案丟失恢復大全。資料庫
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- RMAN恢復案例:丟失全部資料檔案恢復
- RMAN完全恢復丟失的資料檔案
- 普通資料檔案丟失的恢復方法
- 資料檔案丟失損壞的恢復--
- 丟失一個控制檔案並恢復資料庫資料庫
- Oracle備份與恢復【丟失資料檔案的恢復】Oracle
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB
- MongoDB資料庫報錯,資料庫檔案丟失資料恢復案例MongoDB資料庫資料恢復
- 丟失已歸檔日誌檔案下恢復資料庫資料庫
- 歸檔模式下資料檔案丟失的恢復模式
- 【原創】模擬控制檔案丟失的資料庫恢復資料庫
- RMAN資料庫恢復 之歸檔模式有(無)備份-丟失資料檔案的恢復資料庫模式
- 恢復案例:歸檔模式下丟失全部資料檔案的恢復模式
- 備份恢復之資料檔案丟失
- 【資料庫資料恢復】mdb_catalog.wt檔案丟失的MongoDB資料恢復案例資料庫資料恢復MongoDB
- RMAN恢復案例:丟失非系統資料檔案恢復
- 【故障處理】DG環境主庫丟失歸檔情況下資料檔案的恢復
- 恢復丟失的控制檔案
- rman恢復--歸檔模式有備份,丟失資料檔案的恢復模式
- rman恢復--歸檔模式無備份,丟失資料檔案的恢復模式
- 控制檔案丟失恢復
- 【控制檔案丟失恢復】
- rman 恢復---歸檔丟失and資料檔案損壞
- 引數檔案控制檔案和資料檔案丟失的恢復
- 資料檔案丟失的恢復(改變目錄)
- 撤消表空間資料檔案丟失的恢復.
- 【恢復】Redo日誌檔案丟失的恢復
- RMAN恢復案例:無恢復目錄,丟失全部資料檔案、控制檔案、日誌檔案恢復
- oracle歸檔日誌丟失後的資料庫恢復Oracle資料庫
- 歸檔模式下丟失普通資料檔案並恢復模式