作为dba,数据库备份是头等大事,任何时候都不能放松,如果有一天由于数据库损坏,你又找不到备份时,真是灭顶之灾。
以下是我给出的一些关于备份的建议,作为dba,rman备份策略思路考虑以下方面:
1、归档日志的重要性,例如是否需要经常找回历史较久归档日志分析。
2、总的备份空间大小考虑,当时空间足够的情况,尽量保留多点备份,如果库较小,但是产生的归档较多,可能几天的归档就超过了你的真个库的大小了,建议全备份的跨期缩短。
3、尽量留两次以上的全备份,而且是最好是备完再删除历史备份。
以下是脚本内容,分别是归档日志备份和数据库文件全备脚本,一旦发生问题时,可通过恢复全备,并使用归档日志恢复到当前。
归档日志备份脚本
##/opt/script/back_arch.sh
##用于平时的归档日志备份
. /home/oracle/.bash_profile
dt=`date +%Y%m%d`
logdir=/opt/script/log
if [ -d ${logdir} ]
then
sleep 1
else
mkdir -p $logdir
fi
logfile=${logdir}/backup_${dt}.trc
echo "------------`date '+%Y-%m-%d %H:%M'`---Start Backup----------------">>$logfile
rman target / log=$logfile <<EOF
sql 'alter system switch logfile';
crosscheck archivelog all;
crosscheck backup;
delete noprompt expired backup;
run
{allocate channel c1 type disk;
backup Archivelog all filesperset=20 Format '/bak/rman_bak/bak_arch_%s_%p_%T' delete input;
Backup current controlfile format '/bak/rman_bak/bak_ctl_%s_%p_%T';
release channel c1;
}
exit;
EOF
echo "------------`date '+%Y-%m-%d %H:%M'`---End Backup----------------">>$logfile
find ${logdir}/*.trc -ctime +20|xargs rm -f
数据库文件全备份的脚本
##/opt/script/back_db.sh
##用于每个星期的全量日志备份
#!/bin/bash
. /home/oracle/.bash_profile
dt=`date +%Y%m%d`
logdir=/opt/script/log
if [ -d ${logdir} ]
then
sleep 1
else
mkdir -p ${logdir}
fi
logfile=${logdir}/backup_${dt}.trc
echo "------------`date '+%Y-%m-%d %H:%M'`---Start Backup----------------">>$logfile
rman target / log=$logfile <<EOF
crosscheck archivelog all;
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete; ---删除历史的备份
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup as compressed backupset Database
Format '/bak/rman_bak/bak_db_%s_%p_%T' filesperset=1
plus Archivelog filesperset=20 Format '/bak/rman_bak/bak_arch_%s_%p_%T';
Backup current controlfile format '/bak/rman_bak/bak_ctl_%s_%p_%T';
}
exit;
EOF
echo "------------`date '+%Y-%m-%d %H:%M'`---End Backup----------------">>$logfile
find ${logdir}/*.trc -ctime +20|xargs rm -fr
以下是我给出的一些关于备份的建议,作为dba,rman备份策略思路考虑以下方面:
1、归档日志的重要性,例如是否需要经常找回历史较久归档日志分析。
2、总的备份空间大小考虑,当时空间足够的情况,尽量保留多点备份,如果库较小,但是产生的归档较多,可能几天的归档就超过了你的真个库的大小了,建议全备份的跨期缩短。
3、尽量留两次以上的全备份,而且是最好是备完再删除历史备份。
以下是脚本内容,分别是归档日志备份和数据库文件全备脚本,一旦发生问题时,可通过恢复全备,并使用归档日志恢复到当前。
归档日志备份脚本
##/opt/script/back_arch.sh
##用于平时的归档日志备份
. /home/oracle/.bash_profile
dt=`date +%Y%m%d`
logdir=/opt/script/log
if [ -d ${logdir} ]
then
sleep 1
else
mkdir -p $logdir
fi
logfile=${logdir}/backup_${dt}.trc
echo "------------`date '+%Y-%m-%d %H:%M'`---Start Backup----------------">>$logfile
rman target / log=$logfile <<EOF
sql 'alter system switch logfile';
crosscheck archivelog all;
crosscheck backup;
delete noprompt expired backup;
run
{allocate channel c1 type disk;
backup Archivelog all filesperset=20 Format '/bak/rman_bak/bak_arch_%s_%p_%T' delete input;
Backup current controlfile format '/bak/rman_bak/bak_ctl_%s_%p_%T';
release channel c1;
}
exit;
EOF
echo "------------`date '+%Y-%m-%d %H:%M'`---End Backup----------------">>$logfile
find ${logdir}/*.trc -ctime +20|xargs rm -f
数据库文件全备份的脚本
##/opt/script/back_db.sh
##用于每个星期的全量日志备份
#!/bin/bash
. /home/oracle/.bash_profile
dt=`date +%Y%m%d`
logdir=/opt/script/log
if [ -d ${logdir} ]
then
sleep 1
else
mkdir -p ${logdir}
fi
logfile=${logdir}/backup_${dt}.trc
echo "------------`date '+%Y-%m-%d %H:%M'`---Start Backup----------------">>$logfile
rman target / log=$logfile <<EOF
crosscheck archivelog all;
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete; ---删除历史的备份
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup as compressed backupset Database
Format '/bak/rman_bak/bak_db_%s_%p_%T' filesperset=1
plus Archivelog filesperset=20 Format '/bak/rman_bak/bak_arch_%s_%p_%T';
Backup current controlfile format '/bak/rman_bak/bak_ctl_%s_%p_%T';
}
exit;
EOF
echo "------------`date '+%Y-%m-%d %H:%M'`---End Backup----------------">>$logfile
find ${logdir}/*.trc -ctime +20|xargs rm -fr
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31429550/viewspace-2149391/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31429550/viewspace-2149391/