linux运维之oracle自动备份脚本功能实施

#!/bin/bash
myvar=/home/oracle/bin/rman_cmd
mysql=/home/oracle/bin/sql_cmd.sql
myora=/home/oracle/bin/ora_cmd.sql
log=/backup_rman/log/rman_full_`date +%y%m%d%h`.log
#创建备份目录
cd /backup_rman
mkdir bak_`date +%y%m%d%h`
chown oracle:oinstall bak_`date +%y%m%d%h`
chmod 755 bak_`date +%y%m%d%h`
echo "recovery bak_`date +%y%m%d%h` suess" >> $log
sleep 10
#创建备份程序 rman_cmd
if [ ! -f "$myvar" ]; then
touch $myvar
chown oracle:oinstall $myvar
chmod 755 $myvar
echo "create rmn_cmd uess" >> $log
fi
sleep 10
if [ ! -f "$mysql" ]; then
touch $mysql
chown oracle:oinstall $mysql
chmod 755 $mysql
echo "create sql_cmd uess" >> $log
fi
sleep 10
if [ ! -f "$myora" ]; then
touch $myora
chown oracle:oinstall $myora
chmod 755 $myora
echo "create ora_cmd uess" >> $log
fi
sleep 10
##开启oracle归档模式
echo " shutdown immediate; " >>/home/oracle/bin/sql_cmd.sql
echo " startup mount; " >>/home/oracle/bin/sql_cmd.sql
echo " alter database archivelog; " >>/home/oracle/bin/sql_cmd.sql
echo " exit " >>/home/oracle/bin/sql_cmd.sql
##关闭oracle归档模式
echo " shutdown immediate; " >>/home/oracle/bin/ora_cmd.sql
echo " startup mount; " >>/home/oracle/bin/ora_cmd.sql
echo " alter database noarchivelog; " >>/home/oracle/bin/ora_cmd.sql
echo " alter database open; " >>/home/oracle/bin/ora_cmd.sql
echo " exit " >>/home/oracle/bin/ora_cmd.sql
#编辑备份程序 rman_cmd
echo " crosscheck archivelog all; " >>/home/oracle/bin/rman_cmd
echo " delete noprompt expired archivelog all; " >>/home/oracle/bin/rman_cmd
echo " run { " >>/home/oracle/bin/rman_cmd
echo " configure retention policy to recovery window of 4 days; " >>/home/oracle/bin/rman_cmd
echo " configure controlfile autobackup off; " >>/home/oracle/bin/rman_cmd
echo " allocate channel c1 device type disk format '/backup_rman/bak_`date +%y%m%d%h`/rman_full_%t_%u' maxpiecesize=3g; " >>/home/oracle/bin/rman_cmd
echo " allocate channel c2 device type disk format '/backup_rman/bak_`date +%y%m%d%h`/rman_full_%t_%u' maxpiecesize=3g; " >>/home/oracle/bin/rman_cmd
echo " allocate channel c3 device type disk format '/backup_rman/bak_`date +%y%m%d%h`/rman_full_%t_%u' maxpiecesize=3g; " >>/home/oracle/bin/rman_cmd
echo " backup as compressed backupset full database format '/backup_rman/bak_`date +%y%m%d%h`/full_bk1_%u%p%s.rmn'; " >>/home/oracle/bin/rman_cmd
echo " backup full database format '/backup_rman/bak_`date +%y%m%d%h`/full_bk1_%u%p%s.rmn'; " >>/home/oracle/bin/rman_cmd
echo " backup current controlfile format '/backup_rman/bak_`date +%y%m%d%h`/rman_%t_ctl_%u'; " >>/home/oracle/bin/rman_cmd
echo " backup spfile format '/backup_rman/bak_`date +%y%m%d%h`/rman_%t_spfile_%u'; " >>/home/oracle/bin/rman_cmd
echo " release channel c1; " >>/home/oracle/bin/rman_cmd
echo " release channel c2; " >>/home/oracle/bin/rman_cmd
echo " release channel c3; " >>/home/oracle/bin/rman_cmd
echo " } " >>/home/oracle/bin/rman_cmd
echo " crosscheck backupset; " >>/home/oracle/bin/rman_cmd
echo " delete noprompt expired backup; " >>/home/oracle/bin/rman_cmd
echo " delete noprompt obsolete; " >>/home/oracle/bin/rman_cmd
echo " crosscheck archivelog all; " >>/home/oracle/bin/rman_cmd
echo " delete noprompt expired archivelog all; " >>/home/oracle/bin/rman_cmd
#开始执行备份程序 rman_cmd
source /home/oracle/.bash_profile
/u01/app/oracle/product/11.2.0/dbhome_1/bin/sqlplus / as sysdba @ /home/oracle/bin/sql_cmd.sql >> $log
/u01/app/oracle/product/11.2.0/dbhome_1/bin/rman target / nocatalog cmdfile=/home/oracle/bin/rman_cmd log=/backup_rman/log/rman_full_`date +%y%m%d%h`.log
/u01/app/oracle/product/11.2.0/dbhome_1/bin/sqlplus / as sysdba @ /home/oracle/bin/ora_cmd.sql >> $log
#rm -rf /home/oracle/bin/rman_cmd
#删除备份程序 rman_cmd 下次备份重新创建
rm -rf $myvar
rm -rf $mysql
rm -rf $myora