#!/bin/bash
#这个是rman全备shell脚本
#date 2019-02-27
#定义全局变量ORACLE_SID、ORACLE_HOME、ORACLE_BASE、NLS_LANG
export ORACLE_SID=or11g
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_4
export ORACLE_BASE=/u01/app/oracle
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
#定义变量backuptime,用于保存备份文件和备份日志
backuptime=`date +"20%y%m%d%H%M%S"`
backup_dir=/u01/app/$backuptime
if [[ ! -e "$backup_dir" ]]
then
mkdir -p $backup_dir
touch $backup_dir/log
chown -R oracle:oinstall $backup_dir
chmod -R 775 $backup_dir
fi
su - oracle 1>$backup_dir/log 2>&1 <<EOF
cd $ORACLE_HOME/bin
rman target /
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
crosscheck backup;
sql 'alter system archive log current';
backup database format '$backup_dir/db_%d_%T_%U';
sql 'alter system archive log current';
backup archivelog all format '$backup_dir/arc_%t_%s' delete all input;
backup current controlfile format '$backup_dir/cntrl_%s_%p_%s';
crosscheck archivelog all;
delete noprompt expired backup;
delete noprompt obsolete;
delete noprompt backup of database completed before 'sysdate - 30';
release channel c1;
release channel c2;
release channel c3;
}
EOF
echo "backup complete!"