1、编辑环境变量
vi ~/.bash_profile
[dmdba@mydm ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm/dbms/bin"
export DM_HOME="/dm/dbms"
添加以下内容
DM_HOME=/dm/dbms
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${DM_HOME}/bin
export PATH=$PATH:${DM_HOME}/bin
2、编写shell脚本
[dmdba@mydm dm]$ cat backup.sh
##定义变量文件名
d=$(date '+%y%m%d')_TEST
##导出用户TEST的数据
dexp SYSDBA/SYSDBA owner=SYSDBA directory=/dm/bak/ file=$d-%U.dmp log=$d.log parallel=4
##压缩备份文件和日志文件
tar zcvf /dm/bak/$(date '+%y%m%d')_TEST.tar.gz /dm/bak/*_TEST*.dmp /dm/bak/*_TEST*.log --remove-files
##保存7天备份文件,删除6天之前备份
find /dm/bak/ -mtime +6 -name "*.tar.gz" -exec rm -rf {} \;
赋予脚本执行权限
[dmdba@mydm ~]$chmod +x /dm/bak/backup.sh
3、编写定时任务
[dmdba@mydm ~]$ crontab -l
00 00 * * * /dm/backup.sh
全量备份 + 增量备份 + 删除
此备份策略适用于数据量大于 100G 并且小于 3T 的场景下。注意开启数据库归档,确定备份路径。
—设置 2 分钟后自动进行一次全量备份
call SP_INIT_JOB_SYS(1);
call SP_CREATE_JOB('bakall_one',1,0,'',0,0,'',0,'执行一次全量备份');
call SP_JOB_CONFIG_START('bakall_one');
call SP_ADD_JOB_STEP('bakall_one', 'bakall', 6, '01020000/opt/dmdbms/data/DAMENG/bak/all', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bakall_one', 'bakall_one_time01', 1, 0, 0, 0, 0, NULL, NULL, SYSDATE()+0.0014, NULL, '');
call SP_JOB_CONFIG_COMMIT('bakall_one');
--设置全量备份
call SP_CREATE_JOB('bakall',1,0,'',0,0,'',0,'每月第一个周六23:00全量备份');
call SP_JOB_CONFIG_START('bakall');
call SP_ADD_JOB_STEP('bakall', 'bakall', 6, '01020000/opt/dmdbms/data/DAMENG/bak/all', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bakall', 'bakall_time01', 1, 4, 1, 7, 0, '23:00:00', NULL, '2019-01-01 01:01:01', NULL, '');
call SP_JOB_CONFIG_COMMIT('bakall');
--设置增量备份 + 删除备份
call SP_CREATE_JOB('bakadd_delbak',1,0,'',0,0,'',0,'每天(除周六)23:00增量备份、删除30天前的增量备份、删除40天前的全量备份');
call SP_JOB_CONFIG_START('bakadd_delbak');
call SP_ADD_JOB_STEP('bakadd_delbak', 'bakadd', 6, '11020000/opt/dmdbms/data/DAMENG/bak/all|/opt/dmdbms/data/DAMENG/bak/add', 3, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_STEP('bakadd_delbak', 'delbak', 0, 'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/opt/dmdbms/data/DAMENG/bak/add'');
CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'',SYSDATE-30);
SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/opt/dmdbms/data/DAMENG/bak/all'');
CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'',SYSDATE-40);', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bakadd_delbak', 'bakadd_delbak_time01', 1, 2, 1, 63, 0, '23:00:00', NULL, '2019-01-01 01:01:01', NULL, '');
call SP_JOB_CONFIG_COMMIT('bakadd_delbak');