• Linux平台下Oracle定时备份数据


      临时收到一个任务,就是在生产环境上定时备份oracle的数据。空闲时间搞了一下,真是一波三折,过程有点小郁闷,结果哈哈。现在进行总结一下

      (1)新建一个shell脚本test.sh

          #!/bin/bash
        currentTime=`date +%Y%m%d`
    
        /app/admin/product/11.2.0/dbhome_1/bin/exp 用户名/密码@数据库地址 file=/app/admin/admin/bpmtest/back-
    
        updata/${currentTime}.dmp

      (2)chmod 744 test.sh

      (3)使用linux的crontab命令定时备份

        crontab -e 进入vim编辑模式 插入     15 14 * * * /app/admin/admin/bpmtest/back-updata/test.sh (每天14时15分定时备份)

        可以使用 crontab -l 查看当前用户定时的任务

      (4)错误信息排查并解决:

        后面发现定时任务不执行,一开始以为脚本写错了,不过在linux下直接使用./test.sh发现正常执行。

        于是,查看了cron日志,vim /var/log/cron发现报错了:(admin) MAIL (mailed 77 bytes of output but got status 0x004b#012)

        百度查了一下,好象crontab执行错误的话是以邮件通知的。

        更改了执行的脚本test.sh,将错误信息输入到文件中,如下:

        #!/bin/bash
    
        currentTime=`date +%Y%m%d`
    
        /app/admin/product/11.2.0/dbhome_1/bin/exp 用户名/密码@数据库地址 file=/app/admin/admin/bpmtest/back-
    
        updata/${currentTime}.dmp >/app/admin/admin/bpmtest/back-updata/${currentTime}.txt 2>&1

        执行后查看错误文件,发现报错信息:Message 206 not found; No message file for product=RDBMS, facility=EXP: Release 11.2.0.1.0

        后面百度了一下,需要引入oracle的环境变量,重新修改test.sh如下:

     #!/bin/bash
        export ORACLE_HOME=/app/admin/product/11.2.0/dbhome_1
    
        export ORACLE_SID=bpmtest 
    
        currentTime=`date +%Y%m%d`
    
        /app/admin/product/11.2.0/dbhome_1/bin/exp 用户名/密码@数据库地址 file=/app/admin/admin/bpmtest/back-
    
        updata/${currentTime}.dmp >/app/admin/admin/bpmtest/back-updata/${currentTime}.txt 2>&1

        后来又要定时删除备份的数据,服务器只保留最近7天的数据备份。发现在shell中linux命令不执行,后来查了一下,需要导入PATH环境变量,且执行命令需要写全路径。代码如下:

    #!/bin/bash
    export ORACLE_HOME=/app/admin/product/11.2.0/dbhome_1
    export ORACLE_SID=bpmprd
    export PATH=/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/admin/bin:/sbin:/usr/sbin:/app/admin/product/11.2.0/dbhome_1/bin
    currentTime=`date +%Y%m%d`
    /usr/bin/find /app/admin/admin/back-updata/ -mtime +5 -name  "*.dmp" -exec rm -rf {} ;
    /app/admin/product/11.2.0/dbhome_1/bin/exp bas5/bas5@10.100.2.74/bpmprd file=/app/admin/admin/back-updata/${currentTime}.dmp > /app/admin/admin/back-updata/dmp.log 2>&1
    ~                                                                                                                                                                          
  • 相关阅读:
    JAVA学习之常用集合List,Set,Map
    【收藏】SQL多行变一列
    sql 多个字段分组,删除重复记录,保留ID最小的一条
    【转】 JavaScript:history.go() 的妙用(转) 处理post回发后返回
    【转】SQL SERVER 2005中如何获取日期(一个月的最后一日、上个月第一天、最后一天、一年的第一日等等)
    require.context实现自动化导入文件
    Vue进阶——解析V-MODEL
    ES6 的遍历器接口 Iterator
    必须掌握的ES6新特性
    Vue自定义指令获取DOM元素
  • 原文地址:https://www.cnblogs.com/gdpuzxs/p/6861467.html
Copyright © 2020-2023  润新知