zoukankan      html  css  js  c++  java
  • (转)linux自动备份oracle数据库并上传到备份服务器 脚本实现

    实际项目中,备份数据是不可缺少的一步,完成数据的自动备份减少个人的工作量,是我们的目标。之前很少写过脚本,不过这些简单的操作还是可以做到的!话不多说,开始具体介绍:
    oracle版本:10.2.0
    操作系统:linuxredhat6.3
    具体操作:
    (1)在服务器上创建备份目录,并赋予权限
    mkdir -p /backup/oracledata #新建Oracle数据库备份目录

    chown -R oracle:oinstall /backup/oracledata -R #设置目录权限为oinstall用户组的oracle用户(用户oracle与用户组oinstall是在安装Oracle数据库时设置的)

    (2)完成备份脚本

    vi /backup/oracledata/ordatabak.sh #新建文件
    加入下面信息:
    #!/bin/sh ORACLE信息可以通过 .bash_profile 查看
    export ORACLE_BASE=/oracle/app/oracle
    export ORACLE_SID=orcl
    export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
    export PATH=$PATH:$ORACLE_HOME/bin
    export ORACLE_TERM=xterm
    export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin:/usr/bin:/sbin:/usr/sbin
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/lib: /usr/local/lib
    export LANG=C
    export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
    #以上代码为Oracle数据库运行账号oracle的系统环境变量设置,必须添加,否则crontab任务计划不能执行。
    dateTime=`date +%Y_%m_%d` #当前系统时间
    days=7 #删除7天前的备份数据s
    orsid='127.0.0.1:1521/orcl' #oralce连接信息
    orowner=oracle # 备份此用户下面的数据
    bakuser=oracle #用此用户来执行备份,必须要有备份操作的权限
    bakpass=oracle #执行备注的用户密码
    bakdir=/DATA/bakorcldata/moodle #备份文件路径,需要提前创建好
    bakdata=$orowner"_"$dateTime.dmp #备份数据库名称
    baklog=$orowner"_"$dateTime.log #备份执行时候生成的日志文件名称
    ordatabak=$orowner"_"$dateTime.tar.gz #最后保存的Oracle数据库备份文件
    remotePath=/opt/oracle/bakorcl/ #上传到远程服务器的路径

    cd $bakdir #进入备份目录
    mkdir -p $orowner #按需要备份的Oracle用户创建目录
    cd $orowner #进入目录
    exp $bakuser/$bakpass@$orsid grants=y owner=$orowner file=$bakdir/$orowner/$bakdata log=$bakdir/$orowner/$baklog #执行备份
    tar -zcvf $ordatabak $bakdata $baklog #压缩备份文件和日志文件

    find $bakdir/$orowner -type f -name "*.log" -exec rm {} ; #删除备份文件
    find $bakdir/$orowner -type f -name "*.dmp" -exec rm {} ; #删除日志文件
    find $bakdir/$orowner -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} ; #删除7天前的备份(注意:{} 中间有空格)
    scp $bakdir/$orowner/$ordatabak 192.168.0.10:$remotePath #将备份文件上传到远程服务器 如果不输人密码上传请参考http://blog.sina.com.cn/s/blog_957ef38b0102vuxy.html
    :wq! 保存 退出

    (3)添加脚本执行权限
    chmod +x /backup/oracledata/ordatabak.sh #添加脚本执行权限
    (4)编辑系统任务执行计划
    crontab -e
    输入一下信息“:

    00 01 * * * /DATA/bakorcldata/oradatabak.sh#每天凌晨1点,以oracle用户执行ordatabak.sh备份文件

    :wq! #保存退出

    重启crontab

    service crond restart

    从此每天的凌晨1点 系统会自动完成数据库的备份,压缩,并上传到远程服务器的指定路径下!

  • 相关阅读:
    根据系统的pid查询sql语句
    DORADO实现动态拼装查询条件
    一个Spring的配置管理接口
    MS SQL Server Management Studio连接到SQL Server命名实例的方法
    WSDL学习笔记
    显示MyBatis/Ibatis的SQL语句
    测试代码显示
    C#中一个项目中无法引用另外一个项目中的类的问题
    Learn How To Use LogMiner(Practice)
    WIN2003 IIS6 FastCGI php5.33配置重点
  • 原文地址:https://www.cnblogs.com/telwanggs/p/6824123.html
Copyright © 2011-2022 走看看