主頁(yè) > 知識(shí)庫(kù) > rman恢復(fù)方案和oracle異機(jī)恢復(fù)

rman恢復(fù)方案和oracle異機(jī)恢復(fù)

熱門標(biāo)簽:地圖標(biāo)注怎么保存 廣東營(yíng)銷智能外呼系統(tǒng)商家 高德地圖標(biāo)注公司名字大全 七日殺a19.5全地圖標(biāo)注 電渠外呼系統(tǒng) 騰訊地圖標(biāo)注要費(fèi)用嗎 車瑪仕極限運(yùn)動(dòng)場(chǎng)所地圖標(biāo)注 外呼電話系統(tǒng)用卡嗎 N個(gè)你智能電銷機(jī)器人

注:
①恢復(fù)的前提是已經(jīng)做好備份
②完全恢復(fù)數(shù)據(jù)庫(kù)是數(shù)據(jù)庫(kù)遇到故障,在恢復(fù)時(shí)候沒(méi)有丟失任何已經(jīng)提交事物數(shù)據(jù)的恢復(fù)
不完全恢復(fù)數(shù)據(jù)庫(kù)是數(shù)據(jù)庫(kù)遇到故障,在恢復(fù)時(shí)候丟失部分?jǐn)?shù)據(jù)的恢復(fù)
③在linux下需要設(shè)置環(huán)境變量,即需要恢復(fù)的oracle數(shù)據(jù)庫(kù)的實(shí)例名:export ORACLE_SID=orcl
④當(dāng)用resetlogs啟動(dòng)數(shù)據(jù)庫(kù)時(shí),應(yīng)該要對(duì)數(shù)據(jù)庫(kù)進(jìn)行一次全備份

一、恢復(fù)方案
1、丟失數(shù)據(jù)文件,進(jìn)行完全恢復(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ù)庫(kù)恢復(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  rownum20;

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ù)。
RMAN>reset database to incarnation 11;

8、recover database的四條語(yǔ)句區(qū)別
① SQL>recover database using backup controlfile
如果丟失當(dāng)前控制文件,用冷備份的控制文件恢復(fù)的時(shí)候,用來(lái)告訴oracle,不要以controlfile中的scn作為恢復(fù)的終點(diǎn)。
②SQL>recover database until cancel
如果丟失current/active redo的時(shí)候,手動(dòng)指定終點(diǎn)。
③SQL>recover database using backup controlfile until cancel;
如果丟失當(dāng)前controlfile并且current/active redo都丟失,會(huì)先去自動(dòng)應(yīng)用歸檔日志,可以實(shí)現(xiàn)最大的恢復(fù);
④SQL>recover database until cancel using backup controlfile;
如果丟失當(dāng)前controlfile并且current/active redo都丟失,以舊的redo中的scn為恢復(fù)終點(diǎn),因?yàn)闆](méi)有應(yīng)用歸檔日志,所有會(huì)丟失數(shù)據(jù)。

要理解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還要靠后的位置(比如說(shuō),control file是backup controlfile , 或者 controlfile是根據(jù)trace create的。),這時(shí)候,就需要用using backup controlfile.   恢復(fù)就不會(huì)受“當(dāng)前controlfile所記錄的SCN”的限制。這時(shí)候的限制就來(lái)自于你的語(yǔ)句(until time , until scn),或者可用的archive log(until cancel) 。如果控制文件丟失,restore備份的控制文件后,則必須使用using backup controlfile選項(xiàng)。而until cancel則是不完全恢復(fù),即current/active redo丟失,或者從restore數(shù)據(jù)庫(kù)后某個(gè)歸檔文件缺失,則終止。
結(jié)論:
如果有舊的數(shù)據(jù)庫(kù)備份,在歸檔日志和在線日志全部保存完好的情況下,使用recover database或recover database using backup controlfile,則不丟失數(shù)據(jù)
如果存在備份數(shù)據(jù)文件restore后,歸檔日志或者在線日志(active、current)丟失情況下,使用recover database using backup controlfile until cancel,則可以實(shí)現(xiàn)最大恢復(fù)。

二、RMAN異機(jī)恢復(fù)(源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)的實(shí)例名要一致)

1、對(duì)源數(shù)據(jù)庫(kù)進(jìn)行備份

復(fù)制代碼 代碼如下:

RMAN>backup database plus archivelog;
RMAN>backup current controlfile;

2、生成源數(shù)據(jù)庫(kù)的參數(shù)文件,修改后傳至目標(biāo)數(shù)據(jù)庫(kù)
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ù)庫(kù)控制文件放置的位置及名稱' 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ù)成功

您可能感興趣的文章:
  • Oracle數(shù)據(jù)庫(kù)的備份與恢復(fù)
  • Oracle誤刪除表數(shù)據(jù)后的數(shù)據(jù)恢復(fù)詳解
  • oracle冷備份恢復(fù)和oracle異機(jī)恢復(fù)使用方法
  • oracle如何恢復(fù)被覆蓋的存儲(chǔ)過(guò)程
  • Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)丟失恢復(fù)的幾種方法總結(jié)
  • oracle drop table(表)數(shù)據(jù)恢復(fù)方法
  • oracle數(shù)據(jù)庫(kù)創(chuàng)建備份與恢復(fù)腳本整理
  • ORACLE 數(shù)據(jù)庫(kù)RMAN備份恢復(fù)
  • 關(guān)于系統(tǒng)重裝后Oracle數(shù)據(jù)庫(kù)完全恢復(fù)的解決辦法
  • Oracle數(shù)據(jù)庫(kù)恢復(fù)教程之resetlogs操作

標(biāo)簽:蘇州 遼寧 贛州 大興安嶺 長(zhǎng)沙 來(lái)賓 玉樹(shù) 棗莊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《rman恢復(fù)方案和oracle異機(jī)恢復(fù)》,本文關(guān)鍵詞  rman,恢復(fù),方案,和,oracle,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《rman恢復(fù)方案和oracle異機(jī)恢復(fù)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于rman恢復(fù)方案和oracle異機(jī)恢復(fù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章