Linux下oracle_rman備份配置參考文檔

今天出一份linux下oracle數據庫rman備份配置文檔供參考,目前不少環境,我都用這份文檔在作備份,若是有寫的不對的地方還請鐵友們指正,我好到生產環境改正。linux

1. 目錄設置

1.1. Rman備份說明

 備份級別說明
一、Level 0級全備是各增量備份的基礎;
二、增量備份分兩種狀況,incremental和cumulitive,前者備份跟本身同級或比本身級別低的,後者只備份比本身級別低的;
三、incremental備份說明:level1備份上一次level1或level0以來的變化,level2備份上一次level2或level1或level0以來的變化;
四、cumulitive備份說明:level1備份上一次level0以來的變化,level2備份上一次level1或level0以來的變化。
 相關注意說明
一、在數據量比較小、或者數據庫服務器性能很強大的狀況下,能夠天天進行一次全備份;
二、若是備份後須要把備份文件存放到阿里雲的OSS存儲上,因爲OSS存儲有4GB大小限制,須要修改如下三個rman配置,限制RMAN備份片的大小sql

一、level0_backup.rman文件
allocate channel C2 type disk ;                        --修改前
allocate channel C2 type disk maxpiecesize = 3500M ;  --修改後
二、level1_backup.rman文件
allocate channel C3 type disk ;                        --修改前
allocate channel C3 type disk maxpiecesize = 3500M ;  --修改後
三、level2_backup.rman文件
allocate channel C4 type disk ;                        --修改前
allocate channel C4 type disk maxpiecesize = 3500M ;  --修改後

三、配置crontab定時任務,注意避開業務繁忙時段
四、使用oracle用戶配置定時任務,若是須要使用root用戶配置定時任務,計劃任務腳本章節要注意修改環境變量,以及執行腳本注意oracle用戶要對相關路徑具有讀寫執行權限。數據庫

1.2. 目錄說明

daemon庫備份腳本路徑:/backup/rman/scripts/
歸檔文件按日期備份: /backup/arch/date +%Y%m%d
控制文件備份: /backup/rman/controlfile
數據庫文件按日期備份: /backup/rman/data/date +%Y%m%d
按日期生成備份日誌: /backup/rman/logs/date +%Y%m%d
RMAN備份腳本: /backup/rman/scripts
以上全部目錄請作好異地備份。bash

2. rman備份

2.1. 備份策略

 保留最後5次備份數據:
 天天凌晨04:45刪除多餘和無效的備份;
 天天12點與20點備份歸檔日誌;
 天天03點20進行數據庫的0級徹底備份;服務器

2.2. 備份計劃

這裏採用的天天全備,你們可根據實際須要,週一到週六增備,週日全備。
時間 週一至週日
12:00 日誌備份
20:00 日誌備份
03:20 徹底備份
將腳本加入oracle用戶的crontab裏面,讓其按策略自動運行,可根據實際需求調整計劃任務。oracle

$ crontab -e
20 03 * * * /backup/rman/scripts/level0_backup.sh
45 04 * * * /backup/rman/scripts/delobsolete.sh
00 12 * * * /backup/rman/scripts/arch.sh
00 20 * * * /backup/rman/scripts/arch.sh

2.3. 準備工做

將 oracle 數據庫置於「安裝模塊」以啓用日誌歸檔模式,歸檔的日誌存儲在快速恢復區域中ide

mkdir -p /backup/arch
mkdir -p /backup/rman/controlfile
mkdir /backup/rman/data
mkdir /backup/rman/logs
mkdir /backup/rman/scripts
chown -R oracle:oinstall /backup

如下數據庫鏈接前設置鏈接SID性能

$ export ORACLE_SID=daemon
$ sqlplus / as sysdba
SQL> SELECT log_mode from v$database;


輸出的結果爲ARCHIVELOG表示已經開啓歸檔
輸出的結果爲NOARCHIVELOG表示未開啓歸檔

(1)操做開啓歸檔日誌阿里雲

$ sqlplus / as sysdba
SQL> shutdown immediate;
startup mount;
alter database archivelog;
alter database open;

(2)啓用更改跟蹤功能記錄自上次備份以來更改的數據塊位置,以提高增量備份的性能。更改跟蹤文件默認保存在快速恢復區域中(使用RMAN 增量備份時啓動block change tracking以縮短RMAN 備份的時間)。日誌

$ sqlplus / as sysdba
SQL> shutdown immediate;
startup mount
alter system set db_create_file_dest='/u01/oracle/fast_recovery_area';
alter database enable block change tracking;
alter database open;

(3)查看、修改閃回區大小(大小根據實際狀況修改)

SQL> show parameter db_recovery_file_dest;
alter system set db_recovery_file_dest_size=40G scope=both;
shutdown immediate;
startup;

2.4. rman配置

$ rman target /
CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 5 DAYS;

上面兩句只能使用一種條件,保存5個副本或者5天的恢復窗口(建議使用恢復窗口),請按需調整

CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/controlfile/%F';
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/backup/rman/controlfile/snapcf_daemon.f';

2.5. rman腳本

1) delobsolete.rman

cd /backup/rman/scripts
$ vi delobsolete.rman
run {
  crosscheck backup;
  delete noprompt obsolete;
  delete noprompt expired backup;
}
exit

2) arch.rman

$ vi arch.rman
sql 'alter system archive log current' ;
run {
allocate channel C1 type disk FORMAT '/backup/arch/' ;
backup 
skip inaccessible
tag arch_daemon
filesperset 10 format '/backup/arch/%T/arch_%T_%d_%t_%s_%p' archivelog all delete input;
release channel C1;
}
exit

3) level0_backup.rman

$ vi level0_backup.rman
sql 'PURGE DBA_RECYCLEBIN';
sql 'alter system archive log current' ;
run {
allocate channel C2 type disk ;
backup 
incremental level 0 
skip inaccessible 
tag full0_daemon
DATABASE 
filesperset 5 format '/backup/rman/data/%T/db_0_%T_%d_%t_%s_%p';
release channel C2;
}
exit

4) level1_backup.rman

$ vi level1_backup.rman
sql 'PURGE RECYCLEBIN';
sql 'alter system archive log current' ;
run {
allocate channel C3 type disk ;
backup 
incremental level 1
skip inaccessible 
tag level1_daemon
DATABASE 
filesperset 5 format '/backup/rman/data/%T/db_1_%T_%d_%t_%s_%p_inc' ;
release channel C3;
}
exit

5) level2_backup.rman

$ vi level2_backup.rman
sql 'PURGE RECYCLEBIN';
sql 'alter system archive log current' ;
run {
allocate channel C4 type disk ;
backup 
incremental level 2
skip inaccessible 
tag level2_daemon
DATABASE 
filesperset 5 format '/backup/rman/data/%T/db_2_%T_%d_%t_%s_%p_inc' ;
release channel C4;
}
exit

2.6. 計劃任務腳本

1) delobsolete.sh

$ vi delobsolete.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/delobsolete.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_obsolete.log`
exit

2) arch.sh

$ vi arch.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/arch/`date +%Y%m%d`
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/arch.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_arch.log`
exit

3) level0_backup.sh

$ vi level0_backup.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/rman/data/`date +%Y%m%d`
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/level0_backup.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_0.log`
exit

4) level1_backup.sh

$ vi level1_backup.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/rman/data/`date +%Y%m%d`
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/level1_backup.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_1.log`
exit

5) level2_backup.sh

$ vi level2_backup.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/rman/data/`date +%Y%m%d`
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/level2_backup.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_2.log`
exit

3. 結束

相關文章
相關標籤/搜索