rman备份
#创建备份路径路径(根据情况而定)
#################################
mkdir -p /u01/app/oracle/backup/archive_log ##归档日志路径
mkdir -p /u01/app/oracle/backup/backup_log ##备份日志路径
mkdir -p /u01/app/oracle/backup/backup_data ##备份集路径
mkdir -p /u01/app/oracle/backup/backup_ctl #控制文件备份
mkdir -p /u01/app/oracle/backup/backup_arc ##归档日志备份路径
mkdir -p /u01/app/oracle/backup/scripts ##备份脚本路径
chown -R oracle:oinstall /u01/app/oracle/backup
chmod 771 -R /u01/app/oracle/backup/
#设置数据库归档模式
#####################################
查看归档日志是否开启
archive log list;
开启归档
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
修改归档日志路径
alter system set log_archive_dest_1 = 'location=/u01/app/oracle/backup/archive_log/' scope = spfile;
修改控制文件保存备份信息时间
alter sysem set control_file_record_keep_time=32 scope=spfile;
#备份策略
##################################
每个月做一次0级备份
每天做增量1级备份
#备份脚本
#####################################
vi /u01/app/oracle/backup/scripts/level_0_bak.sh
#!/bin/sh
#==========================================================
#The level of the backup: 0
#create date: 2014/12/15
#discription: backup full database except readonly file.
# as the basics of level 1.
# run at every month 01:00.
#==========================================================
CUR_DATE=`date +%Y%m%d`
source /home/oracle/.bash_profile
rman target / nocatalog log=/u01/app/oracle/backup/backup_log/level_0_$CUR_DATE.log << EOF_RMAN
run
{
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/app/oracle/backup/backup_ctl/ctl_%F';
allocate channel ch1 device type disk format '/u01/app/oracle/backup/backup_data/level_0_%U_%T.bak';
allocate channel ch2 device type disk format '/u01/app/oracle/backup/backup_data/level_0_%U_%T.bak';
allocate channel ch3 device type disk format '/u01/app/oracle/backup/backup_data/level_0_%U_%T.bak';
sql 'alter system archive log current';
backup incremental level 0 tag 'level_0' database plus archivelog format '/u01/app/oracle/backup/backup_arc/arc_%U_%T.bak' delete input;
release channel ch1;
release channel ch2;
release channel ch3;
crosscheck backupset;
delete noprompt expired backupset;
delete noprompt obsolete;
}
exit;
EOF_RMAN
vi /u01/app/oracle/backup/scripts/level_1_bak.sh
#!/bin/sh
#==========================================================
#The level of the backup: 1
#create date: 2014/12/15
#discription: backup database exchange
# run at every day 00:00
#==========================================================
CUR_DATE=`date +%Y%m%d`
source /home/oracle/.bash_profile
rman target / nocatalog log=/u01/app/oracle/backup/backup_log/level_1_$CUR_DATE.log << EOF_RMAN
run
{
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/app/oracle/backup/backup_ctl/ctl_%F';
allocate channel ch1 device type disk format '/u01/app/oracle/backup/backup_data/level_1_%U_%T.bak';
allocate channel ch2 device type disk format '/u01/app/oracle/backup/backup_data/level_1_%U_%T.bak';
allocate channel ch3 device type disk format '/u01/app/oracle/backup/backup_data/level_1_%U_%T.bak';
sql 'alter system archive log current';
backup incremental level 1 tag 'level_1' database plus archivelog format '/u01/app/oracle/backup/backup_arc/arc_%U_%T.bak' delete input;
release channel ch1;
release channel ch2;
release channel ch3;
}
exit;
EOF_RMAN
配置计划任务
#################################################
crontab -e
##分 时 日 月 星期
00 01 01 * * * sh /u01/app/oracle/backup/scripts/level_0_bak.sh #每月01:00执行
00 00 * * * * sh /u01/app/oracle/backup/scripts/level_1_bak.sh #每天00:00执行