注: 一、恢復(fù)方案 復(fù)制代碼 代碼如下: RMAN>startup mount; RMAN>restore database; RMAN>recover database; RMAn>sql 'alter database open'; 2、丟失重做日志文件,進(jìn)行不完全恢復(fù) 復(fù)制代碼 代碼如下: SQL>startup mount; SQL>recover database until cancel; SQL>alter database open resetlogs; 3、丟失數(shù)據(jù)文件、控制文件和重做日志文件,進(jìn)行不完全恢復(fù) 復(fù)制代碼 代碼如下: 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、丟失初始化文件、控制文件數(shù)據(jù)文件和重做日志文件,進(jìn)行不完全恢復(fù) 復(fù)制代碼 代碼如下: 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、基于時(shí)間點(diǎn)的恢復(fù)(常用) 復(fù)制代碼 代碼如下: RMAN>startup mount; RMAN>restore database; RMAN>sql 'alter session set nls_date_format="yyyymmdd hh24:mi:ss"'; #設(shè)置顯示時(shí)間格式 RMAN>recover database until time '20140312 17:07:00'; #把數(shù)據(jù)庫恢復(fù)到2014-03-12 17:07:00這一時(shí)間點(diǎn)上 RMAN>sql 'alter database open resetlogs'; 6、基于SCN的恢復(fù) 復(fù)制代碼 代碼如下: RMAN>startup mount; RMAN>restore database; RMAN>recover database until scn 963915; RMAN>sql 'alter database open resetlogs'; ①查詢當(dāng)前SCN號(hào): 復(fù)制代碼 代碼如下: SQL>select dbms_flashback.get_system_change_number from dual; ②根據(jù)SCN號(hào)查詢時(shí)間: 復(fù)制代碼 代碼如下: SQL>select to_char(scn_to_timestamp(963959),'yyyymmdd hh24:mi:si') from dual; ③根據(jù)時(shí)間查詢SCN號(hào): 復(fù)制代碼 代碼如下: SQL>select timestamp_to_scn(to_date('20140309 17:55:10','yyyymmdd hh24:mi:ss')) from dual; ④查詢一段時(shí)間內(nèi)的SCN號(hào): 復(fù)制代碼 代碼如下: SQL>select * from (select time_dp,scn from smon_scn_time order by time_dp desc) where rownum<20; 7、深入理解incarnation:就是可以跨越resetlogs進(jìn)行數(shù)據(jù)恢復(fù) ①每一次resetlogs就會(huì)使incarnation + 1;如果想要恢復(fù)到之前incarnation的scn,就需要先恢復(fù)到之前的incarnation; ②Incarnation 11 and 12都包括scn 900000 的spot,所以當(dāng)incarnation 12 做 until scn的時(shí)候,是恢復(fù)到當(dāng)前incarcation 的 scn;但是根據(jù)我們的需要,我們需要的是incarnation 11的scn 900000;所以就需要切換incarnation到incarnation 11,才能找回我們需要的數(shù)據(jù)。 8、recover database的四條語句區(qū)別 要理解recover database using backup controlfile,先理解 recover database;在普通的recover database 或者 recover tablespace, recover datafile時(shí), Oracle會(huì)以當(dāng)前controlfile所紀(jì)錄的SCN為準(zhǔn),利用archive log和 redo log的redo entry, 把相關(guān)的datafile 的 block恢復(fù)到“當(dāng)前controlfile所紀(jì)錄的SCN”;而某些情況下,Oracle需要把數(shù)據(jù)恢復(fù)到比當(dāng)前controlfile所紀(jì)錄的SCN還要靠后的位置(比如說,control file是backup controlfile , 或者 controlfile是根據(jù)trace create的。),這時(shí)候,就需要用using backup controlfile. 恢復(fù)就不會(huì)受“當(dāng)前controlfile所記錄的SCN”的限制。這時(shí)候的限制就來自于你的語句(until time , until scn),或者可用的archive log(until cancel) 。如果控制文件丟失,restore備份的控制文件后,則必須使用using backup controlfile選項(xiàng)。而until cancel則是不完全恢復(fù),即current/active redo丟失,或者從restore數(shù)據(jù)庫后某個(gè)歸檔文件缺失,則終止。 二、RMAN異機(jī)恢復(fù)(源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的實(shí)例名要一致) 1、對(duì)源數(shù)據(jù)庫進(jìn)行備份 復(fù)制代碼 代碼如下: RMAN>backup database plus archivelog; RMAN>backup current controlfile; 2、生成源數(shù)據(jù)庫的參數(shù)文件,修改后傳至目標(biāo)數(shù)據(jù)庫 3、在windows平臺(tái)下進(jìn)行恢復(fù) 復(fù)制代碼 代碼如下: C:\>oradim -new -sid orcl #創(chuàng)建一個(gè)orcl服務(wù) 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 '目標(biāo)數(shù)據(jù)庫控制文件放置的位置及名稱' from '備份控制文件放置的位置'; RMAN>alter database mount; RMAN>catalog start with '備份集放置的位置'; #向控制文件中添加備份集 RMAN>crosscheck backup; RMAN>report schema; 編寫下邊腳本并運(yùn)行 復(fù)制代碼 代碼如下: run { set newname for datafile 1 to 'C:\oracle\product\10.2.0\oradata\orcl\SYSTEM.DBF'; #實(shí)例中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'; 恢復(fù)成功 您可能感興趣的文章:
|
|