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;