rman恢復方案和oracle異機恢復
注:
①恢復的前提是已經做好備份
②完全恢復資料庫是資料庫遇到故障,在恢復時候沒有丟失任何已經提交事物資料的恢復
不完全恢復資料庫是資料庫遇到故障,在恢復時候丟失部分資料的恢復
③在linux下需要設定環境變數,即需要恢復的oracle資料庫的例項名:export ORACLE_SID=orcl
④當用resetlogs啟動資料庫時,應該要對資料庫進行一次全備份
一、恢復方案
1、丟失資料檔案,進行完全恢復
複製程式碼 程式碼如下:
RMAN>startup mount;
RMAN>restore database;
RMAN>recover database;
RMAn>sql 'alter database open';
2、丟失重做日誌檔案,進行不完全恢復
複製程式碼 程式碼如下:
SQL>startup mount;
SQL>recover database until cancel;
SQL>alter database open resetlogs;
3、丟失資料檔案、控制檔案和重做日誌檔案,進行不完全恢復
複製程式碼 程式碼如下:
RMAN>startup nomount;
RMAN>restore controfile from autobackup;
RMAN>alter database mount;
RMAN>restore database;
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;
4、丟失初始化檔案、控制檔案資料檔案和重做日誌檔案,進行不完全恢復
複製程式碼 程式碼如下:
SQL>startup nomount pfile='D:\oracle\product\10.2.0\db_1\admin\orcl\pfile\init.ora.27201414210'; #pfile的路徑
RMAN>restore spfile from autobackup;
SQL>shutdown immediate;
SQL>startup nomount;
RMAN>restore controlfile from autobackup;
RMAN>alter database mount;
RMAN>restore database;
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;
5、基於時間點的恢復(常用)
複製程式碼 程式碼如下:
RMAN>startup mount;
RMAN>restore database;
RMAN>sql 'alter session set nls_date_format="yyyymmdd hh24:mi:ss"'; #設定顯示時間格式
RMAN>recover database until time '20140312 17:07:00'; #把資料庫恢復到2014-03-12 17:07:00這一時間點上
RMAN>sql 'alter database open resetlogs';
6、基於SCN的恢復
複製程式碼 程式碼如下:
RMAN>startup mount;
RMAN>restore database;
RMAN>recover database until scn 963915;
RMAN>sql 'alter database open resetlogs';
①查詢當前SCN號:
複製程式碼 程式碼如下:
SQL>select dbms_flashback.get_system_change_number from dual;
②根據SCN號查詢時間:
複製程式碼 程式碼如下:
SQL>select to_char(scn_to_timestamp(963959),'yyyymmdd hh24:mi:si') from dual;
③根據時間查詢SCN號:
複製程式碼 程式碼如下:
SQL>select timestamp_to_scn(to_date('20140309 17:55:10','yyyymmdd hh24:mi:ss')) from dual;
④查詢一段時間內的SCN號:
複製程式碼 程式碼如下:
SQL>select * from (select time_dp,scn from smon_scn_time order by time_dp desc) where rownum<20;
7、深入理解incarnation:就是可以跨越resetlogs進行資料恢復
①每一次resetlogs就會使incarnation + 1;如果想要恢復到之前incarnation的scn,就需要先恢復到之前的incarnation;
②Incarnation 11 and 12都包括scn 900000 的spot,所以當incarnation 12 做 until scn的時候,是恢復到當前incarcation 的 scn;但是根據我們的需要,我們需要的是incarnation 11的scn 900000;所以就需要切換incarnation到incarnation 11,才能找回我們需要的資料。
RMAN>reset database to incarnation 11;
8、recover database的四條語句區別
① SQL>recover database using backup controlfile
如果丟失當前控制檔案,用冷備份的控制檔案恢復的時候,用來告訴oracle,不要以controlfile中的scn作為恢復的終點。
②SQL>recover database until cancel
如果丟失current/active redo的時候,手動指定終點。
③SQL>recover database using backup controlfile until cancel;
如果丟失當前controlfile並且current/active redo都丟失,會先去自動應用歸檔日誌,可以實現最大的恢復;
④SQL>recover database until cancel using backup controlfile;
如果丟失當前controlfile並且current/active redo都丟失,以舊的redo中的scn為恢復終點,因為沒有應用歸檔日誌,所有會丟失資料。
要理解recover database using backup controlfile,先理解 recover database;在普通的recover database 或者 recover tablespace, recover datafile時, Oracle會以當前controlfile所紀錄的SCN為準,利用archive log和 redo log的redo entry, 把相關的datafile 的 block恢復到“當前controlfile所紀錄的SCN”;而某些情況下,Oracle需要把資料恢復到比當前controlfile所紀錄的SCN還要靠後的位置(比如說,control file是backup controlfile , 或者 controlfile是根據trace create的。),這時候,就需要用using backup controlfile. 恢復就不會受“當前controlfile所記錄的SCN”的限制。這時候的限制就來自於你的語句(until time , until scn),或者可用的archive log(until cancel) 。如果控制檔案丟失,restore備份的控制檔案後,則必須使用using backup controlfile選項。而until cancel則是不完全恢復,即current/active redo丟失,或者從restore資料庫後某個歸檔檔案缺失,則終止。
結論:
如果有舊的資料庫備份,在歸檔日誌和線上日誌全部儲存完好的情況下,使用recover database或recover database using backup controlfile,則不丟失資料
如果存在備份資料檔案restore後,歸檔日誌或者線上日誌(active、current)丟失情況下,使用recover database using backup controlfile until cancel,則可以實現最大恢復。
二、RMAN異機恢復(源資料庫和目標資料庫的例項名要一致)
1、對源資料庫進行備份
複製程式碼 程式碼如下:
RMAN>backup database plus archivelog;
RMAN>backup current controlfile;
2、生成源資料庫的引數檔案,修改後傳至目標資料庫
3、在windows平臺下進行恢復
複製程式碼 程式碼如下:
C:\>oradim -new -sid orcl #建立一個orcl服務
C:\>set ORACLE_SID=orcl
C:\>sqlplus "/as sysdba";
SQL>startup nomount pfile='C:\INITorcl.ORA';
SQL> create spfile from pfile='C:\INITorcl.ORA';
SQL> shutdown immediate;
SQL>exit;
C:\>set ORACLE_SID=orcl
C:\>rman target/
RMAN>startup nomount;
RMAN>restore controlfile to '目標資料庫控制檔案放置的位置及名稱' from '備份控制檔案放置的位置';
RMAN>alter database mount;
RMAN>catalog start with '備份集放置的位置'; #向控制檔案中新增備份集
RMAN>crosscheck backup;
RMAN>report schema;
編寫下邊指令碼並執行
複製程式碼 程式碼如下:
run
{
set newname for datafile 1
to 'C:\oracle\product\10.2.0\oradata\orcl\SYSTEM.DBF'; #例項中SYSTEM.DBF放置的位置
set newname for datafile 2
to 'C:\oracle\product\10.2.0\oradata\orcl\UNDOTBS1.DBF';
set newname for datafile 3
to 'C:\oracle\product\10.2.0\oradata\orcl\SYSAUX.DBF';
set newname for datafile 4
to 'C:\oracle\product\10.2.0\oradata\orcl\USERS.DBF';
set newname for datafile 5
to 'C:\oracle\product\10.2.0\oradata\orcl\BANK_DATA02.DBF';
restore database;
switch datafile all;
}
RMAN>recover database;
RMAN>sql 'alter database open resetlogs';
恢復成功
詳細出處參考:
①恢復的前提是已經做好備份
②完全恢復資料庫是資料庫遇到故障,在恢復時候沒有丟失任何已經提交事物資料的恢復
不完全恢復資料庫是資料庫遇到故障,在恢復時候丟失部分資料的恢復
③在linux下需要設定環境變數,即需要恢復的oracle資料庫的例項名:export ORACLE_SID=orcl
④當用resetlogs啟動資料庫時,應該要對資料庫進行一次全備份
一、恢復方案
1、丟失資料檔案,進行完全恢復
複製程式碼 程式碼如下:
RMAN>startup mount;
RMAN>restore database;
RMAN>recover database;
RMAn>sql 'alter database open';
2、丟失重做日誌檔案,進行不完全恢復
複製程式碼 程式碼如下:
SQL>startup mount;
SQL>recover database until cancel;
SQL>alter database open resetlogs;
3、丟失資料檔案、控制檔案和重做日誌檔案,進行不完全恢復
複製程式碼 程式碼如下:
RMAN>startup nomount;
RMAN>restore controfile from autobackup;
RMAN>alter database mount;
RMAN>restore database;
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;
4、丟失初始化檔案、控制檔案資料檔案和重做日誌檔案,進行不完全恢復
複製程式碼 程式碼如下:
SQL>startup nomount pfile='D:\oracle\product\10.2.0\db_1\admin\orcl\pfile\init.ora.27201414210'; #pfile的路徑
RMAN>restore spfile from autobackup;
SQL>shutdown immediate;
SQL>startup nomount;
RMAN>restore controlfile from autobackup;
RMAN>alter database mount;
RMAN>restore database;
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;
5、基於時間點的恢復(常用)
複製程式碼 程式碼如下:
RMAN>startup mount;
RMAN>restore database;
RMAN>sql 'alter session set nls_date_format="yyyymmdd hh24:mi:ss"'; #設定顯示時間格式
RMAN>recover database until time '20140312 17:07:00'; #把資料庫恢復到2014-03-12 17:07:00這一時間點上
RMAN>sql 'alter database open resetlogs';
6、基於SCN的恢復
複製程式碼 程式碼如下:
RMAN>startup mount;
RMAN>restore database;
RMAN>recover database until scn 963915;
RMAN>sql 'alter database open resetlogs';
①查詢當前SCN號:
複製程式碼 程式碼如下:
SQL>select dbms_flashback.get_system_change_number from dual;
②根據SCN號查詢時間:
複製程式碼 程式碼如下:
SQL>select to_char(scn_to_timestamp(963959),'yyyymmdd hh24:mi:si') from dual;
③根據時間查詢SCN號:
複製程式碼 程式碼如下:
SQL>select timestamp_to_scn(to_date('20140309 17:55:10','yyyymmdd hh24:mi:ss')) from dual;
④查詢一段時間內的SCN號:
複製程式碼 程式碼如下:
SQL>select * from (select time_dp,scn from smon_scn_time order by time_dp desc) where rownum<20;
7、深入理解incarnation:就是可以跨越resetlogs進行資料恢復
①每一次resetlogs就會使incarnation + 1;如果想要恢復到之前incarnation的scn,就需要先恢復到之前的incarnation;
②Incarnation 11 and 12都包括scn 900000 的spot,所以當incarnation 12 做 until scn的時候,是恢復到當前incarcation 的 scn;但是根據我們的需要,我們需要的是incarnation 11的scn 900000;所以就需要切換incarnation到incarnation 11,才能找回我們需要的資料。
RMAN>reset database to incarnation 11;
8、recover database的四條語句區別
① SQL>recover database using backup controlfile
如果丟失當前控制檔案,用冷備份的控制檔案恢復的時候,用來告訴oracle,不要以controlfile中的scn作為恢復的終點。
②SQL>recover database until cancel
如果丟失current/active redo的時候,手動指定終點。
③SQL>recover database using backup controlfile until cancel;
如果丟失當前controlfile並且current/active redo都丟失,會先去自動應用歸檔日誌,可以實現最大的恢復;
④SQL>recover database until cancel using backup controlfile;
如果丟失當前controlfile並且current/active redo都丟失,以舊的redo中的scn為恢復終點,因為沒有應用歸檔日誌,所有會丟失資料。
要理解recover database using backup controlfile,先理解 recover database;在普通的recover database 或者 recover tablespace, recover datafile時, Oracle會以當前controlfile所紀錄的SCN為準,利用archive log和 redo log的redo entry, 把相關的datafile 的 block恢復到“當前controlfile所紀錄的SCN”;而某些情況下,Oracle需要把資料恢復到比當前controlfile所紀錄的SCN還要靠後的位置(比如說,control file是backup controlfile , 或者 controlfile是根據trace create的。),這時候,就需要用using backup controlfile. 恢復就不會受“當前controlfile所記錄的SCN”的限制。這時候的限制就來自於你的語句(until time , until scn),或者可用的archive log(until cancel) 。如果控制檔案丟失,restore備份的控制檔案後,則必須使用using backup controlfile選項。而until cancel則是不完全恢復,即current/active redo丟失,或者從restore資料庫後某個歸檔檔案缺失,則終止。
結論:
如果有舊的資料庫備份,在歸檔日誌和線上日誌全部儲存完好的情況下,使用recover database或recover database using backup controlfile,則不丟失資料
如果存在備份資料檔案restore後,歸檔日誌或者線上日誌(active、current)丟失情況下,使用recover database using backup controlfile until cancel,則可以實現最大恢復。
二、RMAN異機恢復(源資料庫和目標資料庫的例項名要一致)
1、對源資料庫進行備份
複製程式碼 程式碼如下:
RMAN>backup database plus archivelog;
RMAN>backup current controlfile;
2、生成源資料庫的引數檔案,修改後傳至目標資料庫
3、在windows平臺下進行恢復
複製程式碼 程式碼如下:
C:\>oradim -new -sid orcl #建立一個orcl服務
C:\>set ORACLE_SID=orcl
C:\>sqlplus "/as sysdba";
SQL>startup nomount pfile='C:\INITorcl.ORA';
SQL> create spfile from pfile='C:\INITorcl.ORA';
SQL> shutdown immediate;
SQL>exit;
C:\>set ORACLE_SID=orcl
C:\>rman target/
RMAN>startup nomount;
RMAN>restore controlfile to '目標資料庫控制檔案放置的位置及名稱' from '備份控制檔案放置的位置';
RMAN>alter database mount;
RMAN>catalog start with '備份集放置的位置'; #向控制檔案中新增備份集
RMAN>crosscheck backup;
RMAN>report schema;
編寫下邊指令碼並執行
複製程式碼 程式碼如下:
run
{
set newname for datafile 1
to 'C:\oracle\product\10.2.0\oradata\orcl\SYSTEM.DBF'; #例項中SYSTEM.DBF放置的位置
set newname for datafile 2
to 'C:\oracle\product\10.2.0\oradata\orcl\UNDOTBS1.DBF';
set newname for datafile 3
to 'C:\oracle\product\10.2.0\oradata\orcl\SYSAUX.DBF';
set newname for datafile 4
to 'C:\oracle\product\10.2.0\oradata\orcl\USERS.DBF';
set newname for datafile 5
to 'C:\oracle\product\10.2.0\oradata\orcl\BANK_DATA02.DBF';
restore database;
switch datafile all;
}
RMAN>recover database;
RMAN>sql 'alter database open resetlogs';
恢復成功
詳細出處參考:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1169891/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle RMAN異機恢復Oracle
- oracle的RMAN異機恢復Oracle
- ORACLE RMAN異機異目錄恢復Oracle
- oracle冷備份、恢復和異機恢復Oracle
- Oracle 12c RMAN 異機恢復Oracle
- Oracle 11g RMAN 異機恢復Oracle
- RMAN異機恢復總結
- oracle 異機恢復Oracle
- Oracle備份恢復之熱備份恢復及異機恢復Oracle
- oracle實驗記錄 (恢復-rman恢復)Oracle
- rman之同平臺異機恢復
- rman 恢復機制與恢復測試
- oracle10gR2之RMAN異機恢復案例Oracle
- oracle 10.2.0.1 win 32 rman 備份異機恢復Oracle
- RMAN異地恢復實戰
- RMAN異機恢復:RAC到單例項單例
- 異機恢復RMAN-05517解決方法
- RMAN備份異機恢復流程總結
- 兩篇oracle異機恢復文章Oracle
- 透過搭建恢復目錄實現RMAN異地備份和恢復
- Oracle RMAN恢復測試Oracle
- Oracle rman 各種恢復Oracle
- RMAN恢復 執行重要檔案RMAN恢復
- rman恢復--丟失聯機重做日誌的恢復
- Oracle RMAN 表空間恢復Oracle
- Oracle例項恢復和介質恢復Oracle
- Oracle 11.2.0.4 從單例項,使用RMAN 異機恢復到RACOracle單例
- 初試Oracle的RMAN異地異系統恢復…………失敗…………Oracle
- 用 RMAN 備份異機恢復 遷移資料
- RMAN異機恢復異作業系統(Linux到Windows)作業系統LinuxWindows
- oracle12c新特性(8)--RMAN中的表恢復和分割槽恢復Oracle
- Netbackup+oracle db 異機恢復案例Oracle
- oracle database 例項恢復和介質恢復OracleDatabase
- Oracle 11g RMAN恢復-只讀表空間的恢復Oracle
- ORACLE 11.2.0.4 RAC RMAN異機恢復之ORA-15001Oracle
- RMAN跨版本恢復--從Oracle10.2.0.5恢復到Oracle11.2.0.4Oracle
- rman恢復--丟失控制檔案的恢復
- rman恢復 使用switch映像副本進行恢復