linux中shell定时任务执行oracle备份

时间:2022-07-16 07:50:52

linux中shell定时任务执行oracle备份。

1编写shell脚本

#!/bin/bash

#:本脚本自动备份7天的数据库,每次备份完成后,删除7天之前的数据。编写脚本是否可以执行,请自行测试

#加载oracle的相关参数

#如果oracle参数不明确,请使用命令查看

# su - oracle 

# echo $ORACLE_HOME

export ORACLE_BASE=/home/oracle/app

export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1

export ORACLE_SID=ORCL

export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin

#oracle字符集

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

#获取当前时间,格式:20150210

DATE=$(date +%Y%m%d)

#获取7天之前的时间,格式:20150203

DATE_RM=$(date -d "7 days ago" +%Y%m%d)

#设置备份目录,

export DIR=/dbbackup

echo $DIR

#创建日期目录

mkdir $DIR/$DATE

#开始备份,此处采用exp方式导出,根据实际情况可选用expdb数据方式导出

echo 'Oracle backup...'

exp username/password@ORCL  file=$DIR/$DATE'/sbkfw_'$DATE'.dmp' log=$DIR/$DATE'/sbkfw_log_'$DATE'.log'

echo 'Oracle backup successfully.'

echo 'remove...'

rm -rf $DIR/$DATE_RM

echo 'remove successsfully.'

PS:关于是否进行压缩,请自行更改,因为备份出的数据库文件大于4G又不想分开压缩,所有本帖没有压缩备份文件。

2给脚本付给可执行权限

chmod 777 dbbackup.sh

3设置linux定时任务

#每天1:30执行脚本

crontab -e 进入vi模式,添加定时任务

30 1 * * * /dbback/dbbackup.sh

Ps:这里有个参数需要说明。如果脚本里边不想带oracle的环境变量可以这么写

30 1 * * * su - oracle -c /dbback/dbbackup.sh

4关于linux在shell中获取系统时间

获得当天的日期 date +%Y%m%d

输出: 20110728

有时候我们需要使用今天之前或者往后的日期,这时可以使用date的 -d参数

获取明天的日期 date -d next-day +%Y%m%d

获取前几天的日期 date -d "7 days ago" +%Y%m%d

获取昨天的日期 date -d last-day +%Y%m%d