用shell脚本创建逻辑备份策略

背景:某项目需要定时备份SCOTT模式中的所有信息(表、索引、存储过程、函数、触发器等)详细步骤如下:

1、切换到dmdba用户

su - dmdba

2、通过DM的dexp工具来进行命令行执行

/dmsoft/dmdbms/bin/dexp userid=SYSDBA/SYSDBA file=SCOTT_$(date +%Y_%m_%d)_$(date +%H_%M).dmp log=SCOTT_$(date +%Y_%m_%d)_$(date +%H_%M).log SCHEMAS=SCOTT DIRECTORY=/dmbak/expbak

userid表示:数据库登录信息用户名密码地址以及端口
file表示:明确指定导出文件名称.dmp
SCOTT_(date +%Y_%m_%d)_(date+(date +%H_%M)表示:获取当前时间
log 表示:明确指定导出日志名称.log
SCHEMAS表示:模式列表,导出一个或多个模式下的所有对象
DIRECTORY表示:导出文件所在目录

创建shell脚本来写定时计划(2个脚本,一个是执行备份脚本,另一个是切换到dmdba用户下执行)

脚本1

/dmsoft/scripts/dexpbak.sh

#!/bin/bash
/dmsoft/dmdbms/bin/dexp userid=SYSDBA/SYSDBA file=SCOTT_$(date +%Y_%m_%d)_$(date +%H_%M).dmp log=SCOTT_$(date +%Y_%m_%d)_$(date +%H_%M).log SCHEMAS=SCOTT DIRECTORY=/dmbak/expbak

脚本2

vim /dmsoft/scripts/exec.sh

#!/bin/bash
su - dmdba -s /bin/bash /dmsoft/scripts/dexpbak.sh

指定每天2点执行定时任务crontab

crontab -e
0 2 * * * sh /dmsoft/scripts/exec.sh

查看定时任务服务是否启动:service crond status

启动定时任务服务:service crond start

停止定时任务服务:service crond stop

重启定时任务服务:service crond restrat

或者单独配置定时任务执行以下脚本

vim /dmsoft/scripts/dexpbak2.sh

#!/bin/bash
filebak="scott_$(date +%Y%m%d).DMP"
filelog="scott_$(date +%Y%m%d).LOG"
/dmsoft/dmdbms/bin/dexp "SYSDBA"/"SYSDBA"@LOCALHOST:5236 DIRECTORY=/dmbak/expbak FILE=$filebak SCHEMAS="SCOTT" LOG=$filelog
cd /dmbak/expbak
find /dmbak/expbak -mtime +30 -name "scott*" -exec rm -rf {} \;

指定每天2点执行定时任务crontab

crontab -e
0 2 * * * su - dmdba -c /dmsoft/scripts/dexpbak2.sh 2>&1 >/dev/null