LINUX下ORACLE定时备份数据,使用的expdp。

1、root账户登陆,切换到ORACLE用户。

su - oracle
2、创建一个名为te.sh的脚本,并授权可执行。
mkdir /home/oracle/te/te.sh
chomod 775 /home/oracle/te/te.sh 
3、vi 编辑te.sh,添加如下脚本。
if [ -f ~/.bash_profile ];  
then  
  . ~/.bash_profile  
fi  
export ORACLE_HOME=/data1/oracle/app/oracle/product/11.2.0/db_1
export ORACLE_SID=实例名
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export DATA_DIR=已经授权导出用户expdp的路径
export oldFileName=`date -d "1 hours ago" +%Y%m%d%H`
export nowFileName=`date +%Y%m%d%H`
echo "start......"
expdp 用户名/密码 tables=数据表  dumpfile=$nowFileName.dmp DIRECTORY=DMPDIR log=$nowFileName.log
echo "Delete the file bakup before hours..."
rm -rf $DATA_DIR/$oldFileName.dmp
rm -rf $DATA_DIR/$oldFileName.log
echo "finished....."
4、脚本解释。

 (1)为单个用户每次登陆设置一次环境变量,一定要有这一段,否者定时无效。

if [ -f ~/.bash_profile ];  
then  
  . ~/.bash_profile  
fi  
 (2)导入环境变量和者定义变量。
export ......

 (3)、date 用来处理shell脚本的时间,具体可以查看对应的文档。
`date -d "1 hours ago" +%Y%m%d%H`  --一个小时之前,格式为:年月日时
`date +%Y%m%d%H` --当前时间,格式为:年月日时
 (4)、删除一小时前的文件。
rm -rf $DATA_DIR/$oldFileName.dmp
rm -rf $DATA_DIR/$oldFileName.log

5、oracle的定时任务。现在是在oracle用户下使用,默认对oracle用户操作,如果用的root的需要指定对哪个用户操作,有一定风险。

crontab -e

  crontab -r : 删除当前的定时 
  crontab -l : 列出当前的定时
  crontab -e : 编辑文件



6、crontab -e 定时参数。
5 * * * * /home/oracle/te/te.sh --每个小时5分钟执行
 格式:[分][时][月][年][周][脚本的路径]




  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值