[原創]Oracle 12c的備份和恢復策略
阿新 • • 發佈:2018-02-04
alt star 恢復數據庫 空間 開啟歸檔 acl eas spf bak
Oracle 12c的備份和恢復策略(RMAN備份[開啟歸檔/控制文件/數據文件/歸檔日誌]): 備份策略: * 每半年做一個數據庫的全備份(包括所有的數據和只讀表空間) * 每周做一次零級備份 * 每天做一次一級備份 *備份前設置rman的參數:configure controlfile autobackup on;(RMAN> show all;查看參數) --crontab定時任務: 0 1 1 1,7 * oracle /bin/bash /data/oracle/backup/rman_bak_full.sh >>/tmp/rman_backup.log 2>&1 0 1 * * 0 oracle /bin/bash /data/oracle/backup/rman_bak_0.sh >>/tmp/rman_backup.log 2>&1 0 1 * * 1-6 oracle /bin/bash /data/oracle/backup/rman_bak_1.sh >>/tmp/rman_backup.log 2>&1 ================================================================================================================ 一、備份: 1)數據庫全備份的腳本: #cat /data/oracle/backup/rman_bak_full.sh #!/bin/bash export ORACLE_SID=bieeocrl export ORACLE_BASE=/data/oracle/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/12.1.0.2.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH export NLS_DATE_FORMAT=‘YYYY-MM-DD HH24:MI:SS‘ curr_t=`date +%Y%m%d%H%M%S` echo ‘-------------------------------------------‘ | tee >> /data/oracle/backup/bieeocrl/rman_bak_${curr_t}.log echo ‘Start FULL Backup at ‘`date +%Y-%m-%d:%H:%M:%S` | tee >> /data/oracle/backup/bieeocrl/rman_bak_${curr_t}.log echo ‘-------------------------------------------‘ | tee >> /data/oracle/backup/bieeocrl/rman_bak_${curr_t}.log rman target / nocatalog log /data/oracle/backup/bieeocrl/rman_bak_${curr_t}.log append<<EOF_RMAN run { allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; backup full tag ‘dbfull‘ format ‘/data/oracle/backup/bieeocrl/full_bak_%U_%s_%T‘ as compressed backupset database include current controlfile; sql ‘alter system archive log current‘; backup archivelog all delete input tag=‘arch_bak‘ format ‘/data/oracle/backup/bieeocrl/arch_%U_%s_%T‘; backup current controlfile tag=‘ctl_bak‘format ‘/data/oracle/backup/bieeocrl/full_control_%U_%s_%T‘; backup spfile tag=‘spfile_bak‘ format ‘/data/oracle/backup/bieeocrl/spfile_%U_%s_%T‘;#參數文件備份可選 release channel c1; release channel c2; release channel c3; } EOF_RMAN 2)零級備份的腳本: #cat /data/oracle/backup/rman_bak_0.sh #!/bin/bash export ORACLE_SID=bieeocrl export ORACLE_BASE=/data/oracle/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/12.1.0.2.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH export NLS_DATE_FORMAT=‘YYYY-MM-DD HH24:MI:SS‘ curr_t=`date +%Y%m%d%H%M%S` echo ‘-------------------------------------------‘ | tee >> /data/oracle/backup/bieeocrl/rman_bak_${curr_t}.log echo ‘Start level 0 Backup at ‘`date +%Y-%m-%d:%H:%M:%S` | tee >> /data/oracle/backup/bieeocrl/rman_bak_${curr_t}.log echo ‘-------------------------------------------‘ | tee >> /data/oracle/backup/bieeocrl/rman_bak_${curr_t}.log rman target / nocatalog log "/data/oracle/backup/bieeocrl/rman_bak_${curr_t}.log" append<<EOF_RMAN run { allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; backup incremental level 0 tag ‘db0‘ format ‘/data/oracle/backup/bieeocrl/db0_%U_%s_%T‘ as compressed backupset database; sql ‘alter system archive log current‘; backup archivelog all delete input tag=‘arch_bak‘ format ‘/data/oracle/backup/bieeocrl/arch0_%U_%s_%T‘; backup current controlfile tag=‘ctl_bak‘format ‘/data/oracle/backup/bieeocrl/db0_control_%U_%s_%T‘; backup spfile tag=‘spfile_bak‘ format ‘/data/oracle/backup/bieeocrl/spfile0_%U_%s_%T‘;#參數文件備份可選 release channel c1; release channel c2; release channel c3; } EOF_RMAN 3)一級備份的腳本: #cat /data/oracle/backup/rman_bak_1.sh #!/bin/bash export ORACLE_SID=bieeocrl export ORACLE_BASE=/data/oracle/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/12.1.0.2.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH export NLS_DATE_FORMAT=‘YYYY-MM-DD HH24:MI:SS‘ curr_t=`date +%Y%m%d%H%M%S` echo ‘-------------------------------------------‘ | tee >> /data/oracle/backup/bieeocrl/rman_bak_${curr_t}.log echo ‘Start level 1 Backup at ‘`date +%Y-%m-%d:%H:%M:%S` | tee >> /data/oracle/backup/bieeocrl/rman_bak_${curr_t}.log echo ‘-------------------------------------------‘ | tee >> /data/oracle/backup/bieeocrl/rman_bak_${curr_t}.log rman target / nocatalog log /data/oracle/backup/bieeocrl/rman_bak_${curr_t}.log append<<EOF_RMAN run { allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; backup incremental level 1 tag ‘db1‘ format ‘/data/oracle/backup/bieeocrl/db1_%U_%s_%T‘ as compressed backupset database; sql ‘alter system archive log current‘; backup archivelog all delete input tag=‘arch_bak‘ format ‘/data/oracle/backup/bieeocrl/arch1_%U_%s_%T‘; backup current controlfile tag=‘ctl_bak‘format ‘/data/oracle/backup/bieeocrl/db1_control_%U_%s_%T‘; backup spfile tag=‘spfile_bak‘ format ‘/data/oracle/backup/bieeocrl/spfile1_%U_%s_%T‘;#參數文件備份可選 release channel c1; release channel c2; release channel c3; } EOF_RMAN 如果按照以上oracle備份策略,則每天的所需要備份的數據量只有一天的改變量。而做恢復時最多要恢復一個零級備份+六個一級備份。 ================================================================================================================ 二、恢復數據庫的過程: 1)rman target / nocatalog 2)RMAN> startup nomount; 3)RMAN> restore spfile from ‘/data/oracle/backup/bieeocrl/db0_%U_%s_%T‘; 4)RMAN> shutdown immediate; 5)RMAN> startup nomount; 6)RMAN> restore controlfile from ‘/data/oracle/backup/bieeocrl/db0_control_%U_%s_%T‘; 7)RMAN> alter database mount; 8)RMAN> catalog start with ‘/data/oracle/backup/bieeocrl/arch0_%U_%s_%T‘; 9)RMAN> run{ allocate channel ch1 type disk; restore database; recover database; release channel ch1; } 10)RMAN> alter database open resetlogs; 11)RMAN> shutdown immediate; 12)RMAN> startup; ================================================================================================================
[原創]Oracle 12c的備份和恢復策略