rman恢復(fù)

一症副、恢復(fù)的相關(guān)概念

? ? 1.1)實例恢復(fù)


? ? ? ? ? ? 是指數(shù)據(jù)庫在遭遇突然情況下崩潰,在處理的事務(wù)中有提交的闹啦,有沒有提交的窍奋,


? ? ? ? ? ? 也就是說有臟數(shù)據(jù)琳袄,數(shù)據(jù)庫系統(tǒng)本身有某種記錄狀態(tài)和數(shù)據(jù)的機制窖逗。在下次重啟之后餐蔬,再次運行該實例時,


? ? ? ? ? ? 系統(tǒng)自動檢查相關(guān)狀態(tài)并有專有進程將該實例的狀態(tài)音同、數(shù)據(jù)恢復(fù)到崩潰的那個時候瘟斜。? ?

? ? 1.2)介質(zhì)恢復(fù)

? ? ? ? 首先使用備份還原數(shù)據(jù),然后再應(yīng)用歸檔日志橡类、重做日志的恢復(fù)方式稱為介質(zhì)恢復(fù)芽唇。

? ? ? ? 介質(zhì)恢復(fù)能將一個經(jīng)過還原的數(shù)據(jù)更新到當前的時間點或之前的某個時間點匆笤。

? ? ? ? 通常介質(zhì)恢復(fù)這個術(shù)語專指對數(shù)據(jù)文件進行恢復(fù)的過程炮捧。

? ? ? ? 數(shù)據(jù)塊的介質(zhì)恢復(fù)指數(shù)據(jù)文件中的個別數(shù)據(jù)塊出現(xiàn)錯誤時進行的特殊恢復(fù)操作咆课。

? ? ? ? 介質(zhì)恢復(fù)通常又可以分為完全恢復(fù)和不完全恢復(fù)


? ? ? ? 1.2.1)完全恢復(fù)

? ? ? ? 使用數(shù)據(jù)庫,表空間或數(shù)據(jù)文件的備份進行還原,再使用歸檔,重做日志或增量備份將數(shù)據(jù)更新到當前時間點

? ? ? ? 用戶可以實現(xiàn)基于對數(shù)據(jù)庫、表空間喇澡、數(shù)據(jù)文件執(zhí)行完全恢復(fù)


? ? 1.2.2)不完全恢復(fù)

? ? ? 是將數(shù)據(jù)恢復(fù)到某一個特定的時間點或特定的SCN晴玖。


? ? ? ? 不完全介質(zhì)恢復(fù)的幾種類型:

? ? ? ? ? ? 基于時間的恢復(fù)(Time-based recovery) 將數(shù)據(jù)恢復(fù)到指定的時間點

 ? ? ? ? 用戶控制的恢復(fù)(Cancel-based recovery) 當用戶提交CANCEL后停止恢復(fù)

? ? ? ? ? ? ? ? ? (此選項在使用RMAN時無效)

 ? ? ? ? 基于SCN 的恢復(fù)(Change-based recovery) 將數(shù)據(jù)恢復(fù)到指定的SCN

? ? ? ? ? ? 按重做日志序號恢復(fù)(Log sequence recovery)將數(shù)據(jù)恢復(fù)到指定的重做日志序號

? ? ? ? ? ? (僅使用RMAN時有效)

二、基于用戶管理恢復(fù)的方法

? ? 數(shù)據(jù)恢復(fù)時的常用視圖

? ? ? ? v$reover_file? ? --查詢需要恢復(fù)的文件,該視圖信息來自控制文件,

? ? ? ? ? ? ? ? ? ? ? ? ? ? 如控制文件來自備份或重建過則信息會不準

? ? ? ? v$archived_log? ? --查詢所有歸檔日志列表

? ? ? ? v$recovery_log? ? --查詢所有需要用于恢復(fù)的日志


? ? 常用的recover命令

? ? ? ? --mount狀態(tài)下執(zhí)行恢復(fù)

? ? ? ? ? ? SQL> recover database;

? ? ? ? --open狀態(tài)下執(zhí)行恢復(fù)

? ? ? ? ? ? SQL> recover tablespace users;

? ? 配置恢復(fù)自動使用歸檔日志

? ? ? ? 在介質(zhì)恢復(fù)前通過設(shè)置set autorecovery on來自動應(yīng)用歸檔日志實現(xiàn)恢復(fù)

? ? ? ? 也可以在輸入歸檔日志路徑榨惰、文件名時輸入auto


? ? 恢復(fù)文件到新路徑

? ? ? alter database rename file '<dir>' to '<dir>'

三静汤、完全恢復(fù)?

? ? ? 3.1) 恢復(fù)數(shù)據(jù)庫

? ? ? ? ? ? 3.1.1)備份數(shù)據(jù)庫


? ? ? ? ? ? ? ? ? RMAN> backup database;


? ? ? ? ? ? 3.1.2) 刪除所有數(shù)據(jù)文件


SQL> SELECT 'rm -f? '||file_name? FROM DBA_DATA_FILES;

tail -f /opt/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log

3.1.3)恢復(fù)數(shù)據(jù)庫

? ? ? SQL> startup;

? ? ? SQL> select OPEN_MODE from v$database;

? ? ? SQL> set linesize 200

? ? ? ? ? ? col ERROR format a20

? ? ? ? ? ? select * from v$recover_file;


? ? ? rman target /

? ? ? RMAN> restore database ;


? ? ? SQL>? set linesize 200

? ? ? ? ? ? col ERROR format a20

? ? ? ? ? ? select * from v$recover_file;

? ? ? ? ? ? recover database ;?

? ? ? ? ? ? alter database open;



3.2) 恢復(fù)表空間:恢復(fù)表空間時候琅催,記得OFFLINE表空間居凶,恢復(fù)完成ONLINE;

? ? 3.2.1)創(chuàng)建表空間并插入數(shù)據(jù)

? ? ? ? ? create tablespace rman_tablespace_test datafile '/opt/oracle/oradata/WEISIDB/dbfile_01.dbf' size 100M;

? ? ? ? ? alter user weisi default tablespace rman_tablespace_test;

? ? ? ? ? backup databae;

? ? sqlplus weisi/weisi@weisi

? ? create table big_rman_t tablespace rman_tablespace_test as select * from sys.dba_objects ;? ? ? ?

? ? select count(1) from big_rman_t;

? ? select file_name from dba_data_files where tablespace_name='RMAN_TABLESPACE_TEST' ;

? ? /opt/soft/rman/ORCL/datafile/o1_mf_rman_tab_ckrv2vky_.dbf

? ? rm -f? /opt/oracle/oradata/WEISIDB/dbfile_01.dbf


? ? ? ? ? ? /opt/soft/rman/ORCL/datafile/o1_mf_rman_tab_ckrv2vky_.dbf


? ? select count(1) from big_rman_t;

? ? select file_name,online_status from dba_Data_files;



? ? alter database datafile '/opt/oracle/oradata/WEISIDB/dbfile_01.dbf' offline;

? ? col TABLESPACE_NAME format a30

? ? col file_name format a50

? ? select file_name,online_status from dba_Data_files;

? ? select tablespace_name , status from dba_tablespaces;

? ? alter tablespace rman_tablespace_test offline;

? ? alter tablespace rman_tablespace_test offline immediate;


? ? RMAN> restore tablespace rman_tablespace_test;

? ? ? ? ? recover tablespace rman_tablespace_test;



? ? alter tablespace rman_tablespace_test online;

? ? select count(1) from big_rman_t;

3.3)? 恢復(fù)數(shù)據(jù)文件

? ? ? select file_name,online_status from dba_Data_files;

? ? ? ? rm -f /opt/soft/rman/ORCL/datafile/o1_mf_rman_tab_ckh42899_.dbf

? ? ? ? select count(1) from big_rman_t;

? ? ? ? alter system flush buffer_cache;


? ? ? ? alter database datafile 8 offline;


? ? ? ? RMAN> restore? datafile 8;

? ? ? ? ? ? ? ? ? ? ? ? ? recover datafile 8;


? ? ? ? ? ? ? ? ? alter database datafile 8 online; ?




? ? ? ? ? 總結(jié):

? ? ? ? ? ? ? 數(shù)據(jù)庫處于關(guān)閉狀態(tài)下的恢復(fù):包括系統(tǒng)表空間(系統(tǒng)數(shù)據(jù)文件)、Undo 表空間藤抡、整個數(shù)據(jù)庫

? ? ? ? ? ? ? 1.關(guān)閉實例

? ? ? ? ? ? ? 2.startup mount;

? ? ? ? ? ? ? 3.還原數(shù)據(jù)文件

? ? ? ? ? ? ? 4.使用歸檔日志更新到最新

? ? ? ? ? ? ? 5.打開數(shù)據(jù)庫


? ? ? ? ? 數(shù)據(jù)庫處于打開狀態(tài)下侠碧,非系統(tǒng)數(shù)據(jù)文件丟失的恢復(fù)

? ? ? ? ? 1.將數(shù)據(jù)文件offline(alter database datafile n offline)

? ? ? ? ? 2.還原數(shù)據(jù)文件(restore)

? ? ? ? ? 3.恢復(fù)數(shù)據(jù)文件(recover datafile n)

? ? ? ? ? ? 4.使數(shù)據(jù)文件online (alter database datafile n online)




四:控制文件恢復(fù)

Oracle 控制文件為二進制文件,記錄了當前數(shù)據(jù)庫的物理結(jié)構(gòu)信息,多路復(fù)用的原則缠黍。

在mount階段被讀取,open階段一直被使用


? ? ? ? 控制文件中包含的內(nèi)容:

? ? ? ? ? ? 數(shù)據(jù)庫的名字瓷式、ID替饿、創(chuàng)建的時間戳

? ? ? ? ? ? 表空間的名字

? ? ? ? ? ? 聯(lián)機日志文件、數(shù)據(jù)文件的位置贸典、個數(shù)视卢、名字

? ? ? ? ? ? 聯(lián)機日志的Sequence號碼

? ? ? ? ? ? 檢查點的信息

? ? ? ? ? ? 歸檔信息

? ? ? ? ? ? 備份信息

? ? ? ? alter database backup controlfile to trace as '/opt/soft/control.sql';


? ? ? ? SHOW PARAMETER CONTROL_FILES? ? --列出控制文件的名字、狀態(tài)廊驼、位置等


? ? ? ? 備份控制文件

? ? ? ? 1.alter database backup controlfile to '/opt/soft/control.ctl';

? ? ? ? 2.alter database backup controlfile to trace as '/opt/soft/control.sql' ;

? ? ? ? 3.RMAN>? backup current controlfile;


? ? ? ? 備份:SPFILE

? ? ? ? backup spfile;


? ? ? ? 恢復(fù)SPFILE


? ? ? ? /opt/oracle/product/11.2.0/dbhome/dbs/spfileORCL.ora

? ? ? ? 實驗:

? ? ? ? 1.完全備份數(shù)據(jù)庫

? ? ? ? 2.關(guān)閉數(shù)據(jù)庫

? ? ? ? 3.刪除SPFILE

? ? ? ? ? cd /opt/oracle/product/11.2.0/dbhome/dbs/

? ? ? ? 4.恢復(fù)SPFILE

? ? ? ? ? RMAN> startup force nomount;

? ? ? ? ? RMAN> restore spfile;

? ? ? ? ? RMAN> restore spfile from autobackup;

? ? ? ? ? RMAN> restore spfile from '/opt/oracle/flash_recovery_area/WEISIDB/backupset/2016_12_11/o1_mf_ncsnf_TAG20161211T113526_d4slkyt2_.bkp';

? ? ? ? ? RMAN> restore spfile to '/opt/soft/spfile' from '/opt/soft/recover/ORCL/backupset/2016_04_23/o1_mf_nnsnf_TAG20160423T072145_ckodj973_.bkp';

? ? ? ? ? RMAN> shutdown immediate;

? ? ? ? ? RMAN> start;


? ? ? ? 恢復(fù)控制文件:

? ? ? ? /opt/oracle/oradata/ORCL/control01.ctl, /opt/oracle/oradata/ORCL/control02.ctl

? ? ? ? ? RMAN>? backup current controlfile;

? ? ? ? ? SQL> shutdown immediate;

? ? ? ? ? mv? /opt/oracle/oradata/ORCL/control01.ctl? /opt/oracle/oradata/ORCL/control01.ctl_20160424

? ? ? ? ? mv? /opt/oracle/oradata/ORCL/control02.ctl? /opt/oracle/oradata/ORCL/control02.ctl_20160424


? ? ? ? ? cd opt/soft/recover/ORCL/backupset/


? ? ? ? ? ll -th


? ? ? ? ? SQL>? startup


? ? ? ? ? RMAN> restore controlfile from? '/opt/oracle/flash_recovery_area/WEISIDB/backupset/2016_12_11/o1_mf_ncnnf_TAG20161211T142803_d4swhn8w_.bkp';

? ? ? ? ? RMAN> alter database mount;

? ? ? ? ? RMAN> recover database;

? ? ? ? ? RMAN> alter database open resetlogs;




手動創(chuàng)建控制文件


? ? ? ? ? SQL> alter database backup controlfile to trace as '/opt/soft/control.sql' ;

? ? ? ? ? ? ? shutdown immediate;

? ? ? ? ? ? ? mv? /opt/oracle/oradata/ORCL/control01.ctl? /opt/oracle/oradata/ORCL/control01.ctl_20160424_4

? ? ? ? ? ? ? mv? /opt/oracle/oradata/ORCL/control02.ctl? /opt/oracle/oradata/ORCL/control02.ctl_20160424_4


? ? ? ? ? ? ? sqlplus / as sysdba

? ? ? ? ? ? ? SQL> startup nomount;


? ? ? ? ? ? ? CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS? ARCHIVELOG

? MAXLOGFILES 40

? MAXLOGMEMBERS 3

? ? MAXDATAFILES 100

? ? MAXINSTANCES 8

? ? MAXLOGHISTORY 292

LOGFILE GROUP 2 '/opt/oracle/oradata/ORCL/redo02.log'? SIZE 50M BLOCKSIZE 512, GROUP 3 '/opt/oracle/oradata/ORCL/redo03.log'? SIZE 50M BLOCKSIZE 512

DATAFILE? '/opt/oracle/oradata/ORCL/system01.dbf','/opt/oracle/oradata/ORCL/sysaux01.dbf', '/opt/oracle/oradata/ORCL/undotbs01.dbf', '/opt/oracle/product/11.2.0/dbhome/dbs/data_D-ORCL_I-1434170406_TS-USERS_FNO-4_0vr1prk2', '/opt/oracle/oradata/ORCL/weisi_catalog_01.dbf','/opt/oracle/oradata/ORCL/undo02.dbf','/opt/soft/oracle/rman_tbs_01.dbf'? CHARACTER SET AL32UTF8;

RECOVER DATABASE using backup controlfile;

alter database open resetlogs;


? ? ? ? 數(shù)據(jù)文件無備份情況下的恢復(fù)

? ? ? ? 前提是非系統(tǒng)表空間

? ? ? ? 控制文件未被重新創(chuàng)建或恢復(fù)到以前的版本(丟失數(shù)據(jù)文件的描述信息應(yīng)在數(shù)據(jù)字典和控制文件中)

? ? ? ? 該數(shù)據(jù)文件從文件開始到丟失期間的所有日志必須存在

? ? ? ? 使用下面的命令重建數(shù)據(jù)文件

? ? ? ? ? ? alter database create datafile 'filename';

? ? ? ? ? ? alter database create datafile 'filename' as 'new file name'; --可以放置到不同目錄

? ? ? ? 步驟:-->先將丟失數(shù)據(jù)文件脫機-->重建數(shù)據(jù)文件-->應(yīng)用歸檔日志-->聯(lián)機恢復(fù)的數(shù)據(jù)文件

? ? ? ? SQL> create tablespace rman_datafile_nobackup datafile '/opt/oracle/oradata/ORCL/no_back.dbf' size 100M


? ? ? ? ? ? ? create user wuzhenxing identified by wuzhenxing default tablespace rman_datafile_nobackup;

grant select on DBA_OBJECTS to wuzhenxing;

grant connect to wuzhenxing;

grant resource to wuzhenxing;

wuzhenxing

? ? ? ? ? ? ? create table t as select * from sys.dba_objects;

? ? ? ? ? ? ? insert into t select * from t;

? ? ? ? ? ? ? select count(1) from t;


? ? ? ? ? ? ? SYS

? ? ? ? ? ? ? alter system switch logfile;

? ? ? ? ? ? ? alter system checkpoint;


? ? ? ? ? ? ? os

? ? ? ? ? ? ? rm -f /opt/oracle/oradata/ORCL/no_back.dbf


? ? ? ? ? ? ? SYS

? ? ? ? ? ? ? alter system flush buffer_cache;


? ? ? ? ? ? ? wuzhenxing

? ? ? ? ? ? ? select count(1) from t;


? ? ? ? ? ? ? SYS

? ? ? ? ? ? ? select * from dba_data_files;

? ? ? ? ? ? ? 5?

? ? ? ? ? ? ? alter database datafile 5 offline;

? ? ? ? ? ? ? select * from v$recover_file;

? ? ? ? ? ? ? alter database create datafile 5;

? ? ? ? ? ? ? select * from v$recovery_log;

? ? ? ? ? ? ? select name,checkpoint_change# from v$datafile_header;

? ? ? ? ? ? ? recover datafile 5;

? ? ? ? ? ? ? alter database datafile 5 online;

? ? ? wuzhenxing

? ? ? select count(1) from t;


? ? ? rm -f /opt/oracle/oradata/ORCL/no_back.dbf


? ? ? ps -ef |grep dbw


? ? ? cd /proc/11573/fd


? ? ? ll | grep no


? ? ? cp 31 /opt/oracle/oradata/ORCL/no_back.dbf


? ? ? alter database datafile 9 offline;

? ? ? recover datafile 9;

? ? ? alter database datafile 4 online;







? resetlogs


? 數(shù)據(jù)在啟動時候是要做一致性檢查的据过,oracle在open階段要做兩次檢查


1. 檢查數(shù)據(jù)文件頭的檢查點計數(shù)(checkpoint cnt)是否和控制文件的檢查點計數(shù)(checkpoint cnt)一致。目的是確認數(shù)據(jù)文件

? ? 是否來自同一版本妒挎,而不是從備份中恢復(fù)的绳锅。如果這一步檢查通過,就進行第二步檢查


2. 檢查數(shù)據(jù)文件頭的開始scn和控制文件中記錄該文件的結(jié)束scn是否一致酝掩。如果數(shù)據(jù)文件頭的開始scn和控制文件中該文件的結(jié)束scn

? ? 相等鳞芙,那說明這個數(shù)據(jù)文件就不需要恢復(fù),否則就要恢復(fù)文件


? 如果以上兩步檢查都通過庸队,那就可以正常打開數(shù)據(jù)庫积蜻,鎖定數(shù)據(jù)文件,同時將控制文件中每個數(shù)據(jù)文件的結(jié)束scn設(shè)置無窮大彻消。

? 我們在某些條件下打開數(shù)據(jù)竿拆,會提示讓用resetlogs選項open數(shù)據(jù)庫,為什么要用resetlogs呢宾尚?它是干嘛用的呢丙笋?問號一大堆了吧,

下面來具體分析下。



? resetlogs的作用


? 防止陳舊的數(shù)據(jù)進入數(shù)據(jù)庫(保證數(shù)據(jù)庫的一致性)煌贴,用resetlogs打開數(shù)據(jù)庫御板,一定要立即對數(shù)據(jù)庫做個全備。

? 在控制文件牛郑,data file header怠肋,redo log header里存儲”resetlogs data“,當open resetlogs被執(zhí)行時淹朋,可以通過這些內(nèi)容檢查一致性笙各。



什么時候用resetlogs


1. 不完全恢復(fù)

2. 用備份的控制文件恢復(fù)

3. 新創(chuàng)建的控制文件來恢復(fù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钉答,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子杈抢,更是在濱河造成了極大的恐慌数尿,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惶楼,死亡現(xiàn)場離奇詭異右蹦,居然都是意外死亡,警方通過查閱死者的電腦和手機歼捐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門何陆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人窥岩,你說我怎么就攤上這事甲献≡诅停” “怎么了颂翼?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長慨灭。 經(jīng)常有香客問我朦乏,道長,這世上最難降的妖魔是什么氧骤? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任呻疹,我火速辦了婚禮,結(jié)果婚禮上筹陵,老公的妹妹穿的比我還像新娘刽锤。我一直安慰自己,他們只是感情好朦佩,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布并思。 她就那樣靜靜地躺著,像睡著了一般语稠。 火紅的嫁衣襯著肌膚如雪宋彼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天仙畦,我揣著相機與錄音输涕,去河邊找鬼。 笑死慨畸,一個胖子當著我的面吹牛莱坎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寸士,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼檐什,長吁一口氣:“原來是場噩夢啊……” “哼瞳收!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起厢汹,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤螟深,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后烫葬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體界弧,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年搭综,在試婚紗的時候發(fā)現(xiàn)自己被綠了垢箕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡兑巾,死狀恐怖条获,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蒋歌,我是刑警寧澤帅掘,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站堂油,受9級特大地震影響修档,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜府框,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一吱窝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迫靖,春花似錦院峡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜈首,卻和暖如春实抡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背欢策。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工吆寨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人踩寇。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓啄清,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辣卒,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容