####自定义脚本配置定时任务,定期备份达梦数据库,定期清理历史备份集###
vi /dm8/backup/bak_dm.sh
####bak_dm.sh脚本起始###
#/bin/bash
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"
export DM_HOME="/dm8"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
#当天年月日
CUR_DATE=`date +'%Y%m%d%H%M%S'`
#获取当天是星期几
WEEKDAY_INDEX=`date +'%w'`
#逻辑备份全库
dexp sysdba/***@localhost:5236 file=dexp_${CUR_DATE}.dmp directory=/dm8/backup/dmp log=dexp_${CUR_DATE}.log full=y
#在线物理备份全库、归档日志,每周六全量备份,其他日期增量备份。同时删除30天前的历史备份集
if [[ $WEEKDAY_INDEX -eq 6 ]]; then
disql sysdba/***@localhost:5236<<EOF
backup database full backupset '/dm8/backup/full/dmdb01_full_${CUR_DATE}';
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/full');
call sp_db_bakset_remove_batch('DISK',now()-30);
EOF
else
disql sysdba/***@localhost:5236<<EOF
backup database increment with backupdir '/dm8/backup/full' backupset '/dm8/backup/incr/dmdb01_incr_${CUR_DATE}';
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/incr');
call sp_db_bakset_remove_batch('DISK',now()-30);
EOF
fi
#备份归档
disql sysdba/***@localhost:5236<<EOF
backup archivelog all backupset '/dm8/backup/arch/arch_full_${CUR_DATE}';
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/arch');
call SP_ARCH_BAKSET_REMOVE_BATCH('DISK',now()-30);
EOF
#删除30天前的dmp备份文件
find /dm8/backup/dmp -mtime 30 -type f -name "*.dmp" -exec rm -rf {} \;
######bak_dm.sh脚本结束#####
#配置执行权限、定时任务
chmod +x /dm8/backup/bak_dm.sh
#配置定时任务,每天晚上22点定时执行备份脚本
crontab -e
0 22 * * * su - dmdba -c "/dm8/backup/bak_dm.sh" >>/dm8/backup/bak_dm.log 2>&1
#重启定时任务,使其生效
service crond restart