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

- 日理万妓 2022-05-31 01:10 297阅读 0赞

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

  1. su - oracle

2、创建一个名为te.sh的脚本,并授权可执行。

  1. mkdir /home/oracle/te/te.sh
  2. chomod 775 /home/oracle/te/te.sh

3、vi 编辑te.sh,添加如下脚本。

  1. if [ -f ~/.bash_profile ];
  2. then
  3. . ~/.bash_profile
  4. fi
  5. export ORACLE_HOME=/data1/oracle/app/oracle/product/11.2.0/db_1
  6. export ORACLE_SID=实例名
  7. export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
  8. export DATA_DIR=已经授权导出用户expdp的路径
  9. export oldFileName=`date -d "1 hours ago" +%Y%m%d%H`
  10. export nowFileName=`date +%Y%m%d%H`
  11. echo "start......"
  12. expdp 用户名/密码 tables=数据表 dumpfile=$nowFileName.dmp DIRECTORY=DMPDIR log=$nowFileName.log
  13. echo "Delete the file bakup before hours..."
  14. rm -rf $DATA_DIR/$oldFileName.dmp
  15. rm -rf $DATA_DIR/$oldFileName.log
  16. echo "finished....."

4、脚本解释。

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

  1. if [ -f ~/.bash_profile ];
  2. then
  3. . ~/.bash_profile
  4. fi

(2)导入环境变量和者定义变量。

  1. export ......

(3)、date 用来处理shell脚本的时间,具体可以查看对应的文档。

  1. `date -d "1 hours ago" +%Y%m%d%H` --一个小时之前,格式为:年月日时
  2. `date +%Y%m%d%H` --当前时间,格式为:年月日时

(4)、删除一小时前的文件。

  1. rm -rf $DATA_DIR/$oldFileName.dmp
  2. rm -rf $DATA_DIR/$oldFileName.log

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

  1. crontab -e

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

6、crontab -e 定时参数。

  1. 5 * * * * /home/oracle/te/te.sh --每个小时5分钟执行

格式:[分][时][月][年][周][脚本的路径]

发表评论

表情:
评论列表 (有 0 条评论,297人围观)

还没有评论,来说两句吧...

相关阅读