您的位置:首页 > 其它

rman自动备份脚本

2014-06-06 14:53 417 查看
一、单独备份

1、经典整库备份:backup as compressed backupset database include current controlfile plus archivelog delete all input;

2、tablespace:backup tablespace 名字;

3、数据文件:backup datafile n; (n:具体的数据文件编号select file_name,file_id,tablespace_name from dba_data_files;)

4、控制文件:backup current controlfile;或者backup database include current controlfile;

5、日志文件:backup archivelog all;或者 database plus archivelog;

6、参数文件:backup spfile;

7、全库备份脚本:
复制代码 代码如下:

run{   

allocate channel c1 type disk;   

backup full tag ‘dbfull' format ‘/backup/full%u_%s_%p' database   

include current controlfile;   

sql ‘alter system archive log current'; #在数据库进行全备份完成之后,需要执行该条命令将当前日志归档,备份归档日志时应该包括最后生成的归档

backup filesperset 3 format ‘/backup/arch%u_%s_%p'#filesperset 3设定每个备份集里文件不超过3个  

archivelog all delete input; #备份归档可选,可以单独定期备份   

release channel c1;    



二、增量备份
1、0级增量备份
复制代码 代码如下:

run{   

allocate channel c1 type disk;   

backup incremental level 0 tag ‘db0' format ‘/backup/db0%u_%s_%p'database 

include current controlfile;  ;   

sql 'alter system archive log current';#在数据库进行全备份完成之后,需要执行该条命令将当前日志归档,备份归档日志时应该包括最后生成的归档

backup filesperset 3 format ‘/backup/arch%u_%s_%p'#filesperset 3设定每个备份集里文件不超过3个 

archivelog all delete input; #备份归档可选,可以单独定期备份   

release channel c1;    

}  

2、1级备份脚本 

复制代码 代码如下:

run{   

allocate channel c1 type disk;     

backup incremental level 1 tag ‘db1' format ‘/backup/db1%u_%s_%p'   

database skip readonly include current controlfile;      

backup filesperset 3 format ‘/backup/arch%u_%s_%p'#filesperset设定每个备份集里文件不超过3个

archivelog all delete input; #备份归档可选,可以单独定期备份   

release channel c1;     

}


RMAN备份脚本

--本地

创建文件夹

mkdir /home/oracle/backup

mkdir /home/oracle/backup/script

mkdir /home/oracle/backup/log

mkdir /home/oracle/backup/export

--备份目的地

mkdir /home/oracle/rman_backup

创建备份表空间

create tablespace rman_tbs datafile '/oradata/luke/rman_tbs01.dbf' size 1024M;

创建备份用户

create user rman identified by rman default tablespace rman_tbs temporary tablespace temp;

grant connect,resource ,recovery_catalog_owner to rman;

rman catalog rman/rman

create catalog tablespace rman_tbs;

connect target 

register database;

report schema;

configure retention policy to redundancy 2;

configure retention policy to recovery window of 7 days;

--倒出RMAN用户数据脚本exp_rman.par (即备份catalog库)


userid=rman/rman

file=/home/oracle/backup/export/rman.dmp

log=/home/oracle/backup/log/rman.log

-- 倒出RMAN数据SHELL脚本exp_rman.sh

#!/bin/bash

cd $HOME

. .bash_profile

cd $HOME/backup/script

exp parfile=exp_rman.par

-- 零级备份RMAN脚本level0_backup.rcv

connect catalog rman/rman

connect target 

run { 

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS; 

CONFIGURE CONTROLFILE AUTOBACKUP ON; 

allocate channel d1 type disk;

allocate channel d2 type disk;

backup incremental level 0 database format '/home/oracle/rman_backup/level0_%d_%s_%p_%u.bak'

tag='level 0' include current controlfile;

sql 'alter system archive log current';

backup archivelog all format '/home/oracle/rman_backup/log_%d_%s_%p_%u.bak' delete all input;

release channel d2;

release channel d1;

}

crosscheck backup;

delete noprompt expired backup;

delete noprompt obsolete;

resync catalog;

--零级备份SHELL脚本的level0_backup.sh

#!/bin/bash

cd $HOME

. .bash_profile

cd $HOME/backup/script

rman cmdfile=level0_backup.rcv msglog=$HOME/backup/log/level0_backup.log

. /home/oracle/backup/script/exp_rman.sh

--一级差异增量备份RMAN脚本 level1_backup.rcv

connect catalog rman/rman

connect target 

run {

allocate channel d1 type disk;

backup incremental level 1 format '/home/oracle/rman_backup/level1_%d_%s_%p_%u.bak' tag = 'level 1' database;

sql 'alter system archive log current';

backup archivelog all format '/home/oracle/rman_backup/log_%d_%s_%p_%u.bak' delete all input;

release channel d1;

}

crosscheck backup;

delete noprompt expired backup;

delete noprompt obsolete;

resync catalog;

--一级差异增量备份SHELL脚本level1_backup.sh

#!/bin/bash

cd $HOME

. .bash_profile

cd /home/oracle/backup/script

rman cmdfile=level1_backup.rcv msglog=$HOME/backup/log/level1.log

. /home/oracle/backup/script/exp_rman.sh

--二级差异增量备份RMAN脚本 level2_backup.rcv

connect catalog rman/rman

connect target 

run {

allocate channel d1 type disk;

backup incremental level 2 format '/home/oracle/rman_backup/level2_%d_%s_%p_%u.bak' tag = 'level 2' database;

sql 'alter system archive log current';

backup archivelog all format '/home/oracle/rman_backup/log_%d_%s_%p_%u.bak' delete all input;

release channel d1;

}

crosscheck backup;

delete noprompt expired backup;

delete noprompt obsolete;

resync catalog;

--二级差异增量备份SHELL脚本level2_backup.sh

#!/bin/bash

cd $HOME

. .bash_profile

cd /home/oracle/backup/script

rman cmdfile=level2_backup.rcv msglog=$HOME/backup/log/level2.log

. /home/oracle/backup/script/exp_rman.sh

提高 RMAN增量备份性能

alter database enable block change tracking using file

'/u01/app/oracle/admin/devdb/bdump/luke.log';

desc v$block_change_tracking;

linux下定时执行备份脚本

crontab -e -u oracle

SHELL=/bin/bash --以下脚本在bash下执行

MAILTO=oracle --执行日志以邮件形式邮给oracle用户,可以/var/spool/mail/oracle下查收

10 1 * * 0 /home/oracle/backup/script/level0_backup.sh

10 1 * * 1 /home/oracle/backup/script/level2_backup.sh

10 1 * * 2 /home/oracle/backup/script/level2_backup.sh

10 1 * * 3 /home/oracle/backup/script/level1_backup.sh

10 1 * * 4 /home/oracle/backup/script/level2_backup.sh

10 1 * * 5 /home/oracle/backup/script/level2_backup.sh

10 1 * * 6 /home/oracle/backup/script/level2_backup.sh

一周差异备份策略:

备份目标库和catalog库

周日0级全备,周一周二为2级,周三为1级,周四周五周六为2级。

每天凌晨1点10分开始备份

零级备份

backup incremental level 0 database;

一级差异增量 差异增量是默认增量备份方式

backup incremental level 1 database;

一级累计增量

backup incremental level 1 cumulative database;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: