经过一段时间的观察发现两个本地和远程的两个dataguard运行都比较稳定,所以决定将日常的备份放到datagurad上。
以分担主库的压力。主库只定期做全备份。
备份脚本:rman_back.sh
由于数据库比较小,就没有做增量备份,直接做了全备份。
#!/bin/bash
export ORACLE_BASE=/u01/ora
export ORACLE_HOME=$ORACLE_BASE/product/11.2.3/db_1
export ORACLE_SID=orclprd
export PATH=/usr/sbin:$ORACLE_HOME/bin:$PATH
rman target / <<EOF
run{
backup database
skip inaccessible
plus archivelog
filesperset 20;
}
allocate channel for maintenance device type disk;
crosscheck backupset;
delete noprompt obsolete;
exit;
EOF
授予rman_back.sh给oracle用户 可执行的权限
chmod 744 rman_back.sh
将备份脚本添加到crontab里
crontab -e
00 01 * * * sh /u01/ora/backup/rman_back.sh >> /u01/ora/backup/rman_back.log
删除归档脚本:
more rman_del_archivelog.sh
#!/bin/bash
export ORACLE_BASE=/u01/ora
export ORACLE_HOME=$ORACLE_BASE/product/11.2.3/db_1
export ORACLE_SID=orclprd
export PATH=/usr/sbin:$ORACLE_HOME/bin:$PATH
rman target / <<EOF
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog until time 'sysdate-7';
exit;
EOF
more del_archivelog.sh
#!/bin/bash
##### LOGFILE=/u01/ora/arch01/del_archive.log
date=`date +%Y-%m-%d:%H:%M:%S`
echo "----------Begin delete archivelog $date ----------"
sh /u01/ora/arch01/rman_del_archivelog.sh
echo "----------End delete archivelog $date ----------"
date
将删除归档脚本添加到crontab里
crontab -e
00 03 * * * sh /u01/ora/arch01/del_archivelog.sh >>/u01/ora/arch01/del_archive.log