ORACLE備份恢復(fù) 之 RMAN

RMAN(Recovery Manager)backupset方式的優(yōu)點(diǎn)

1孕暇、歸檔模式下清笨,可以在數(shù)據(jù)庫(kù)open狀態(tài)下進(jìn)行備份伏钠,保證了7*24的業(yè)務(wù)

2、不使用的空塊不會(huì)備份蚂蕴,減少了I/O消耗

3低散、備份期間會(huì)默認(rèn)檢查數(shù)據(jù)庫(kù)是否損壞

4、可以進(jìn)行增量備份

5骡楼、可以實(shí)現(xiàn)各種級(jí)別的備份熔号,比如數(shù)據(jù)庫(kù)、表空間鸟整、數(shù)據(jù)文件

6引镊、能夠恢復(fù)到故障點(diǎn),或者離故障點(diǎn)最近的時(shí)間點(diǎn)篮条,保證數(shù)據(jù)的最少丟失

RMAN備份的保存策略

過期的備份文件oracle不會(huì)自動(dòng)從磁盤上刪除弟头,僅僅是標(biāo)記過期,過期的文件可以使用RMAN> delete obsolete直接從磁盤上刪除涉茧。

基于時(shí)間的備份保留策略

說的簡(jiǎn)單些赴恨,就是你希望數(shù)據(jù)庫(kù)最早能恢復(fù)到幾天前,如果有增量備份伴栓,則備份文件的保留時(shí)間=retention period + level 0 backup interval

比如伦连,每隔一個(gè)月即30天執(zhí)行一次0級(jí)備份,每隔1天執(zhí)行一次1級(jí)備份钳垮,如果設(shè)置備份保留策略為3天惑淳,不是說3天以前的所有備份文件都過期了,而是說我們可以恢復(fù)到3天前饺窿。

理解:每個(gè)月的1號(hào)執(zhí)行0級(jí)備份歧焦,今天是3號(hào),要恢復(fù)到三天前肚医,那就是要恢復(fù)到上個(gè)月的30號(hào)倚舀,上個(gè)月的30號(hào)的數(shù)據(jù)是基于上個(gè)月1號(hào)的0級(jí)備份+上個(gè)月每天的1級(jí)備份叹哭,那么上個(gè)月1號(hào)的0級(jí)備份文件的保留天數(shù)就是3+30=33

備份集復(fù)制

RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;

--配置rman備份時(shí)生成兩份備份文件

RMAN> backup copies 2? datafile 4 FORMAT '/home/oracle/bak1/%U','/home/oracle/bak2/%U';

--生成兩份備份文件,一份存放于/home/oracle/bak1目錄痕貌,一份存放于/home/oracle/bak2目錄

配置rman默認(rèn)的備份路徑

RMAN> configure channel device type disk format '/home/oracle/bak/%U';

如果沒有配置风罩,則默認(rèn)存放在db_recovery_file_dest參數(shù)路徑下,如果沒有配置db_recovery_file_dest參數(shù)舵稠,則默認(rèn)存放在$ORACLE_HOME/dbs目錄

Format字符串替代變量的官方文檔路徑https://docs.oracle.com/cd/E11882_01/backup.112/e10643/rcmsubcl010.htm#RCMRF195

%U是最常用的超升,為每個(gè)備份片生成一個(gè)唯一名稱

RMAN 備份類型

鏡像復(fù)制

RMAN>backup as copy datafile 4;--備份文件和實(shí)際文件大小一樣,屬于完全的拷貝

備份集

RMAN>backup as backupset datafile 4;--備份文件遠(yuǎn)遠(yuǎn)小于實(shí)際文件大小哺徊,空塊不會(huì)備份室琢。

備份集備份片

官方文檔路徑https://docs.oracle.com/cd/E11882_01/backup.112/e10642/glossary.htm#BRADV526

一般情況下,一個(gè)備份集由一個(gè)備份片組成落追,設(shè)置備份文件冗余度或出現(xiàn)備份片有大小限制時(shí)盈滴,才會(huì)有一個(gè)備份集對(duì)應(yīng)多個(gè)備份片

備份片

backup piece

The physical file format used to store an RMAN backup set. Each logical backup set contains one or more physical backup pieces.

用于存儲(chǔ)RMAN備份集的物理文件格式。每個(gè)邏輯備份集包含一個(gè)或多個(gè)物理備份件轿钠。

簡(jiǎn)單說巢钓,備份片,就是備份后生成的一個(gè)個(gè)物理文件疗垛,一個(gè)備份片里面可能包含一個(gè)或多個(gè)datafile症汹。

備份集是個(gè)邏輯概念

backup set

A backup of one or more data files, control files, server parameter files, and archived redo log files. Each backup set consists of one or more binary files. Each binary file is called a backup piece. Backup pieces are written in a proprietary format that can only be created or restored by RMAN.

一個(gè)或多個(gè)數(shù)據(jù)文件、控制文件贷腕、服務(wù)器參數(shù)文件和歸檔重做日志文件的備份背镇。每個(gè)備份集由一個(gè)或多個(gè)二進(jìn)制文件組成。每個(gè)二進(jìn)制文件稱為備份片泽裳。備份片是以專有格式編寫的瞒斩,只能由RMAN創(chuàng)建或恢復(fù)。

默認(rèn)情況下涮总,備份集和備份片是一一對(duì)應(yīng)的

RMAN> backup database format '/home/oracle/1data%U';

select * from v$backup_set

select * from v$backup_piece

設(shè)置備份集大小時(shí)济瓢,備份集和備份片是一對(duì)多的

RMAN> CONFIGURE MAXSETSIZE clear;

RMAN> run

2> {allocate channel c1 device type disk maxpiecesize 1000M;

3> backup database format '/home/oracle/2data%U';

4> }

select * from v$backup_set

select * from v$backup_piece

增量備份

級(jí)別0-4,默認(rèn)是差異增量備份妹卿。

就算沒有0級(jí)備份,直接在執(zhí)行1級(jí)或2級(jí)備份蔑鹦,會(huì)自動(dòng)先進(jìn)行0級(jí)備份夺克。

RMAN> backup incremental level 2 database format '/home/oracle/bak/%U';

Starting backup at 24-MAY-18

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=32 device type=DISK

no parent backup or copy of datafile 1 found

no parent backup or copy of datafile 2 found

no parent backup or copy of datafile 5 found

no parent backup or copy of datafile 3 found

no parent backup or copy of datafile 4 found

channel ORA_DISK_1: starting incremental level 0 datafile backup set

channel ORA_DISK_1: specifying datafile(s) in backup set

input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf

input datafile file number=00002 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf

input datafile file number=00005 name=/u01/app/oracle/oradata/orcl/example01.dbf

input datafile file number=00003 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf

input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf

channel ORA_DISK_1: starting piece 1 at 24-MAY-18

channel ORA_DISK_1: finished piece 1 at 24-MAY-18

piece handle=/home/oracle/bak/1at3lltr_1_1 tag=TAG20180524T024722 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:01:24

channel ORA_DISK_1: starting incremental level 2 datafile backup set

channel ORA_DISK_1: specifying datafile(s) in backup set

input datafile file number=00006 name=/u01/app/oracle/oradata/orcl/users02.dbf

input datafile file number=00007 name=/u01/app/oracle/oradata/orcl/users03.dbf

input datafile file number=00008 name=/u01/app/oracle/oradata/orcl/cataspace.dbf

channel ORA_DISK_1: starting piece 1 at 24-MAY-18

channel ORA_DISK_1: finished piece 1 at 24-MAY-18

piece handle=/home/oracle/bak/1bt3lm0g_1_1 tag=TAG20180524T024722 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03

Finished backup at 24-MAY-18

Starting Control File and SPFILE Autobackup at 24-MAY-18

piece handle=/home/oracle/bak/c-1498036209-20180524-00 comment=NONE

Finished Control File and SPFILE Autobackup at 24-MAY-18

只要對(duì)1號(hào)數(shù)據(jù)文件即SYSTEM 表空間的數(shù)據(jù)文件做備份時(shí),就算控制文件的自動(dòng)備份沒有打開嚎朽,RMAN也會(huì)自動(dòng)對(duì)控制文件做備份铺纽。

所以備份數(shù)據(jù)庫(kù)時(shí),也一定會(huì)自動(dòng)備份控制文件哟忍,因?yàn)閿?shù)據(jù)庫(kù)包含1號(hào)數(shù)據(jù)文件狡门。

RMAN> catalog backuppiece ''

如果重建控制文件陷寝,里面的備份信息都丟失了的話,就算沒有使用catalog數(shù)據(jù)庫(kù)其馏,可以使用catalog命令把備份文件注冊(cè)到控制文件中凤跑。

查看備份進(jìn)度的SQL語句

SELECT SID, SERIAL#, opname,ROUND(SOFAR/TOTALWORK*100)||'%' "%_COMPLETE",

TRUNC(elapsed_seconds/60) || ':' || MOD(elapsed_seconds,60) elapsed,

TRUNC(time_remaining/60) || ':' || MOD(time_remaining,60) remaining,

CONTEXT,target,SOFAR, TOTALWORK

FROM V$SESSION_LONGOPS

WHERE OPNAME LIKE 'RMAN%'

AND OPNAME NOT LIKE '%aggregate%'

AND TOTALWORK != 0

AND SOFAR <> TOTALWORK;

restore:還原,把數(shù)據(jù)文件從備份集中還原出來

recover:恢復(fù)叛复,使用歸檔日志或在線日志恢復(fù)

--restore默認(rèn)從控制文件中最新的一個(gè)備份包中恢復(fù)仔引,如果最新的不存在,就找第二新的褐奥,如果第二新的不存在咖耘,就找第三新的,依次類推撬码,如果一個(gè)都沒有就報(bào)錯(cuò)

--restore有until time儿倒,則是使用until time范圍內(nèi)最新的備份包,比如3個(gè)備份包呜笑,分別是1:00,2:00,3:00夫否,如果UNTIL TIME "TO_DATE('2:30:00','hh24:mi:ss')",那就是使用2:30范圍內(nèi)的最新包蹈垢,那就是2:00的那個(gè)備份包

非歸檔模式可以使用rman備份慷吊,但是只能在mount方式進(jìn)行,沒什么實(shí)際意義

[oracle@ocp ~]$ rman target /

Recovery Manager: Release 11.2.0.3.0 - Production on Tue May 15 01:54:08 2018

Copyright (c) 1982, 2011, Oracle and/or its affiliates.? All rights reserved.

connected to target database: ORCL (DBID=1498036209)

RMAN> backup datafile 6;

ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode

[oracle@ocp ~]$ rman target /

Recovery Manager: Release 11.2.0.3.0 - Production on Tue May 15 01:55:31 2018

Copyright (c) 1982, 2011, Oracle and/or its affiliates.? All rights reserved.

connected to target database: ORCL (DBID=1498036209, not open)

RMAN> backup datafile 6;

Finished backup at DD-MAY-YY

最全面最簡(jiǎn)潔的備份腳本和恢復(fù)方法:

RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;

RMAN>CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/bak/%F';

RMAN>backup database format '/home/oracle/bak/datafile%U' plus archivelog format '/home/oracle/bak/arch%U' delete all input;

以上腳本備份步驟如下

1曹抬、歸檔溉瓶,再備份歸檔日志,刪除已備份的歸檔日志

2谤民、備份數(shù)據(jù)庫(kù)文件

3堰酿、歸檔,再備份歸檔日志张足,刪除已備份的歸檔日志

4触创、備份控制文件和參數(shù)文件

delete all input --刪除所有路徑下的歸檔日志

delete input? --刪除一個(gè)路徑下的歸檔日志

假設(shè)所有文件都丟失了,恢復(fù)步驟如下

1为牍、恢復(fù)spfile文件

rman target /

RMAN> startup nomount;

RMAN> restore spfile from 'XX';

2哼绑、啟動(dòng)數(shù)據(jù)庫(kù)到nomount狀態(tài)

sqlplus / as sysdba

SQL> shutdown abort;

SQL> startup nomount;

3、恢復(fù)控制文件

rman target /

RMAN> restore controlfile from '/home/oracle/bak/c-2876937480-20180819-00';

4碉咆、啟動(dòng)數(shù)據(jù)庫(kù)到mount狀態(tài)

sqlplus / as sysdba

SQL> alter database mount;

5抖韩、restore數(shù)據(jù)庫(kù)、recover不完全恢復(fù)數(shù)據(jù)庫(kù)

RMAN> restore database;

RMAN> recover database;--此過程除了使用已備份的歸檔日志外疫铜,還會(huì)使用備份完成之后生成的未備份的歸檔日志

RMAN> recover database until sequence XX;--XX使用上一步recover database中提示需要的sequence

6茂浮、啟動(dòng)數(shù)據(jù)庫(kù)到open狀態(tài),使用resetlogs

sqlplus / as sysdba

SQL> alter database open resetlogs;

rman的advisor工具

Rman>List failure;--顯示異常的文件數(shù)量

Rman>Advise failure;--顯示需要恢復(fù)的文件詳細(xì)信息

Rman>Repair failure preview;--顯示需要恢復(fù)操作的腳本,并把腳本存放到某個(gè)路徑下,(當(dāng)沒有產(chǎn)生報(bào)告時(shí)敲一下Validate database席揽,再重新來一遍L(zhǎng)ist failure\ Advise failure)

Rman>Repair failure;--進(jìn)行恢復(fù)操作

備份一個(gè)文件顽馋,再關(guān)機(jī),再刪除這個(gè)文件幌羞,再啟動(dòng)到mount寸谜,執(zhí)行上面的順序操作就可以恢復(fù)

VALIDATE 命令支持對(duì)單個(gè)備份集和數(shù)據(jù)塊進(jìn)行驗(yàn)證。在物理?yè)p壞中新翎,數(shù)據(jù)庫(kù)根本無法識(shí)別塊程帕。在邏輯損壞中,塊的內(nèi)容在邏輯上不一致地啰。默認(rèn)情況下愁拭,VALIDATE 命令只檢查物理?yè)p壞。也可以指定CHECK LOGICAL 檢查邏輯損壞亏吝。

塊損壞可分為塊間損壞和塊內(nèi)損壞岭埠。

在塊內(nèi)損壞中,塊本身發(fā)生損壞蔚鸥,可以是物理?yè)p壞也可以是邏輯損壞惜论。

在塊間損壞中,塊與塊之間發(fā)生的損壞只能是邏輯損壞止喷。

VALIDATE 命令只檢查塊內(nèi)損壞馆类。

https://docs.oracle.com/cd/E11882_01/backup.112/e10642/glossary.htm#BRADV526

interblock corruption 塊間損壞

A type of block corruption in which the corruption occurs between blocks rather than within the block itself. This type of corruption can only be logical corruption.

intrablock corruption 塊內(nèi)損壞

A type of block corruption in which the corruption occurs within the block itself. this type of corruption can be either a physical corruption or logical corruption.

RMAN> VALIDATE DATABASE;--檢查物理壞塊,只做檢查動(dòng)作

RMAN> VALIDATE CHECK LOGICAL DATABASE;--檢查邏輯壞塊弹谁,只做檢查動(dòng)作

RMAN> BACKUP VALIDATE DATABASE;--檢查物理壞塊乾巧,只檢查不備份

RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE;--檢查邏輯壞塊,只檢查不備份

RMAN> BACKUP DATABASE;--沒有VILIDATE预愤,表示做備份的動(dòng)作沟于,備份的同時(shí)檢查物理壞塊,RMAN備份時(shí)默認(rèn)檢查物理壞塊

RMAN> BACKUP CHECK LOGICAL DATABASE;--沒有VILIDATE植康,表示做備份的動(dòng)作旷太,備份的同時(shí)檢查邏輯壞塊

catalog的官方文檔路徑https://docs.oracle.com/cd/E11882_01/backup.112/e10642/rcmcatdb.htm#BRADV8015

Nocatalog就是用control file控制文件記錄備份信息

如果使用nocatalog方式

備份文件的保留時(shí)間=retention period + level 0 backup interval

控制文件記錄保留時(shí)間

control_file_record_keep_time=備份文件的保留時(shí)間+1

比如,每隔一個(gè)月即30天執(zhí)行一次0級(jí)備份销睁,每隔1天執(zhí)行一次1級(jí)備份供璧,如果設(shè)置備份保留策略為3天,就是說我們可以恢復(fù)到3天前冻记。

控制文件中記錄保留天數(shù)就是3+30+1=34

CATALOG創(chuàng)建和使用步驟

1.創(chuàng)建表空間

SQL> create tablespace cataspace datafile '/u01/app/oracle/oradata/ocp/cataspace.dbf' size 10M autoextend on;

2.創(chuàng)建用戶

SQL> create user catauser identified by oracle default tablespace cataspace;

3.用戶授權(quán)睡毒,必須要有recovery_catalog_owner

SQL> grant connect,resource,recovery_catalog_owner to catauser;

4.RMAN登錄CATALOG,并創(chuàng)建CATALOG

[oracle@ocp ~]$ rman catalog catauser/oracle

RMAN> create catalog;

5.RMAN登錄數(shù)據(jù)庫(kù)和CATALOG檩赢,并注冊(cè)數(shù)據(jù)庫(kù)到CATALOG,并使用。

[oracle@ocp ~]$ rman target / catalog catauser/oracle

RMAN> register database;

RMAN> backup datafile 7;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贞瞒,一起剝皮案震驚了整個(gè)濱河市偶房,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌军浆,老刑警劉巖棕洋,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異乒融,居然都是意外死亡掰盘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門赞季,熙熙樓的掌柜王于貴愁眉苦臉地迎上來愧捕,“玉大人,你說我怎么就攤上這事申钩〈位妫” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵撒遣,是天一觀的道長(zhǎng)邮偎。 經(jīng)常有香客問我,道長(zhǎng)义黎,這世上最難降的妖魔是什么禾进? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮廉涕,結(jié)果婚禮上泻云,老公的妹妹穿的比我還像新娘。我一直安慰自己火的,他們只是感情好壶愤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著馏鹤,像睡著了一般征椒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上湃累,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天勃救,我揣著相機(jī)與錄音,去河邊找鬼治力。 笑死蒙秒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宵统。 我是一名探鬼主播晕讲,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了瓢省?” 一聲冷哼從身側(cè)響起弄息,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎勤婚,沒想到半個(gè)月后摹量,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡馒胆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年缨称,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祝迂。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡睦尽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出液兽,到底是詐尸還是另有隱情骂删,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布四啰,位于F島的核電站宁玫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏柑晒。R本人自食惡果不足惜欧瘪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望匙赞。 院中可真熱鬧佛掖,春花似錦、人聲如沸涌庭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)坐榆。三九已至拴魄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間席镀,已是汗流浹背匹中。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留豪诲,地道東北人顶捷。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像屎篱,于是被迫代替她去往敵國(guó)和親服赎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子葵蒂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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