Oracle每天自动备份脚本

因为需要最近写了一个适用于Oracle上的备份脚本,Oracle的数据备份不像MySQL一样直接使用二进制工具就可以备份,在Oracle上进行数据备份需要 做好相应的配置,在配置好后才能进行正常的数据备份脚本,所以在Oracle备份数据前需要做一些配置。

首先,因为Oracle的11g开始的特性,空表不会分配表空间所以在备份脚本中我使用了expdp工具来进行数据备份,在备份开始之前需要先把Oracle的数据泵导出目录用DBA账户先做好指定并且授权读写,再修改目录的属组,操作很简单,就是一些expdp数据泵的操作,这个以前有说明过,在这里就不做篇幅做说明了,可以参看:http://jim123.blog.51cto.com/4763600/1941618,在设置好dpdata1目录后,还需要修改dpdata1目录的属组这点很重要,不然使用expdp导出的数据文件无法写入,具体根据当时安装Oracle时定义的属组修改权限

[[email protected] ~]# chown oracle:oinstall /data/backup/oracle_backup

在修改完以上的步骤后,再把Oracle用户下的bash_profile配置文件中在安装时定义好的环境变量拷贝到脚本中,在定义好脚本的执行时间就可以了,脚本的实现比较简单,如下:

#!/bin/bash
#oracle_backup.sh version1.0 chmod 700
#writer jim
#00 00 * * * /usr/local/scripts/oracle_backup.sh
#chmod 700 /usr/local/scripts/oracle_backup.sh
#You must first import the environment variables in the Oracle user‘s bash_profile file
#Must be used to define the DBA account first dpdata1 path and authorized directory to read and write, modify the dpdata1 group
#history
#2017.07.01
export ORACLE_BASE=/usr/local/u01/oracle
export ORACLE_HOME=/usr/local/u01/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=oracle11
export NLS_LANG="american_america.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
datetime=$(date +"%Y%m%d")
dpdata1_dir="/data/backup/oracle_backup"
oracle_u01="u01"
oracle_u02="u02"
oracle_password1="u01_password"
oracle_password2="u02_password"

expdp ${oracle_u01}/${oracle_password1} directory=dpdata1 dumpfile=${oracle_u01}_${datetime} logfile=${oracle_u01}_${datetime}.log

if [ $? -ne 0 ];then
    echo "$(date +"%Y-%m-%d_%H:%M:%S")oracle_${oracle_u01}_backup_file!" > ${dpdata1_dir}/${datetime}_err.log
fi

expdp ${oracle_u02}/${oracle_password2} directory=dpdata1 dumpfile=${oracle_u02}_${datetime} logfile=${oracle_u02}_${datetime}.log

if [ $? -ne 0 ];then
    echo "$(date +"%Y-%m-%d_%H:%M:%S")oracle_${oracle_u02}_backup_file!" >> ${dpdata1_dir}/${datetime}_err.log
fi

/usr/bin/bzip2 -z ${dpdata1_dir}/*${datetime}*
find $dpdata1_dir -type f -ctime +30 -name "*.bz2" -exec rm -vf {} \;

当然,也可以把失败的地方换成写好的发邮件的function,在失败的时候发一封邮件也可以

时间: 2024-12-28 17:41:29

Oracle每天自动备份脚本的相关文章

windows下oracle数据库自动备份脚本

1.根据日期自动生成 Oracle 备份文件 @echo off echo 正在备份Oracle数据库,请稍等...... exp userid='用户名/密码@SID' file=D:\bak\res_%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=D:\bak\res_%date:~0,4%%date:~5,2%%date:~8,2%.log owner=res echo 任务完成! 2.根据日期时间分秒自动生成 Oracle 备份文件 @echo off

oracle数据库自动备份脚本

::通过exp命令导出远程机器(192.168.2.1)上指定服务(orcl)指定用户(pmis)及密码(pmis)的数据 ::运行该脚本的机器必须安装oracle @echo off @echo [备份pmis系统的数据] set hh=%time:~0,2% set hh=%hh: =0% set sid=127.0.0.1/orcl set backdir=D:\oracle_bak set backfile=%backdir%\%date:~0,4%%date:~5,2%%date:~8

Oracle自动备份脚本的实现

问题描述: Oracle自动备份脚本的实现. 错误提示1: Message file RMAN.msb not found Verify that Oracle_HOME is set properly ...... 错误原因: 自动执行的不能够识别相应的命令,需要在自动备份脚本中显式的声明Oracle的环境变量. 错误提示2: standard in must be a tty ...... 错误原因: 不能在cron使用su或者管道等操作,必须将su命令移动到相关的shell脚本中. 错误提

Windows环境下Oracle数据库的自动备份脚本

批处理文件(.bat) @echo off echo ================================================ echo  Windows环境下Oracle数据库的自动备份脚本 echo  1. 使用当前日期命名备份文件. echo  2. 自动删除7天前的备份. echo ================================================ ::以“YYYYMMDD”格式取出当前时间. set BACKUPDATE=%date

Linux下Oracle自动备份脚本

#!/bin/bash export ORACLE_HOME=/usr/local/instantclient_11_2export PATH=$ORACLE_HOME:$PATHexport TNS_ADMIN=$ORACLE_HOME/network/adminexport LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH#export NLS_LANG='simplified chinese_china.ZHS16GBK'export NLS_LA

Linux下Oracle定时自动备份方案

公司业务系统数据库是Oracle 11g,以前用的备份方案是用imp,但是这个方案的速度相对比较慢,最近经过研究,打算将备份方案改写为expdp形式,记录一下操作过程 服务器关系 两台服务器用作备份,包含正式环境服务器跟备份服务器,正式环境每天凌晨3点定时通过expdp导出全库,再用scp传输至备份服务器存档 实现scp免密码传输 直接运行scp传输命令,会提示输入密码,要实现无人值守定时运行,就需要让两台服务器的交互能够自动免密,在此通过建立ssh信任关系的方法来实现 在正式服务器上执行ssh

Linux自动备份脚本

今天网上一个朋友问了我一个shell的题目,让我帮他做下.下面是题目以及解题思路. 题目: 写作一个备份/etc目录的脚本,要求:将/etc目录下的所有文件cp到/var/backups目录下的以当天的日期命名的目录中例如(/var/backups/etc.20140809).并且判断前一天的目录中的文件与当天的区别,如果无区别,则删除前一天的备份目录. 解答: [[email protected] scripts]# cat auto_bak.sh  #!/bin/bash # # This 

实战:INNOBACKUPEX for mysql 5.6自动备份脚本

#backup.sh #!/bin/sh # # 第一次执行它的时候它会检查是否有完全备份,否则先创建一个全库备份 # 当你再次运行它的时候,它会根据脚本中的设定来基于之前的全库备份进行增量备份 #[email protected] INNOBACKUPEX_PATH=innobackupex  #INNOBACKUPEX的命令 INNOBACKUPEXFULL=/usr/bin/$INNOBACKUPEX_PATH  #INNOBACKUPEX的命令路径 #mysql目标服务器以及用户名和密码

MySql Windws 下自动备份脚本

这几天正在做一个  使用MySQL数据库的项目,目前项目已经完成了,当部署好项目之后,正在考虑如何自动备份MySql数据库的问题,我在网上找了一下资料终于解决了,特此记录一下. 1 @echo off 2 echo. 3 echo MySQL数据库备份 4 5 echo ***************************** 6 echo. 7 echo 今天是 %date% 8 echo 时间是 %time% 9 echo. 10 echo ************************