oracle数据库备份之exp增量备份

    本篇只介绍使用exp对oracle数据库定时备份并如何恢复的方法。

    Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP、EXPDP/IMPDP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。

    exp支持增量备份,而expdp不支持增量备份

    exp/imp增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。

    增量导出包括三种类型: 完全备份,累积备份,增量备份

    下面简单三种备份的用法以及区别:

        1,完全备份:顾名思义,导出整个数据库所有数据

exp system/manager inctype=complete file=sys_all_6.dmp log=sys_all_6.log

        2,累积备份:导出上次“完全备份”后数据库变化的信息

exp system/manager inctype=cumulative file=sys_cumulative_1.dmp log=sys_cumulative_1.log

        3,增量备份:备份上次“备份”后变化的信息

exp system/manager inctype=incremental file=sys_cumulative_3.dmp log=sys_cumulative_3.log

    例如我设置一个oracle备份策略:

        周六:完全备份

        周日:增量备份

        周一:增量备份

        周二:增量备份

        周三:累积备份

        周四:增量备份

        周五:增量备份

       那么当周六我的数据库被破坏了(备份之前),恢复数据库的流程呢,那就是:

          第一,重新生成数据库结构

          第二,创建附加回滚

          第三,完全备份导入(周六)

                imp    system/manager inctype=RESTORE FULL=y FILE=周六完全备份文件

          第四,累积备份导入(周三)

                 imp    system/manager inctype=RESTORE FULL=y FILE=周三累积备份文件

          第五,增量备份导入(周四)

                 imp    system/manager inctype=RESTORE FULL=y FILE=周四累积备份文件

          第六,增量备份导入(周五)

                 imp    system/manager inctype=RESTORE FULL=y FILE=周五累积备份文件

    还是很简单的吧,博主就是使用这种方式对oracle数据库进行备份的,但这种方式有个弊端,就是最后一次备份到数据库宕机前的数据会丢失。

下面给大家附上一段博主自己写的完全备份策略脚本,累积备份和增量备份修改部分参数后即可:

#!/bin/bash
#oracle数据库备份用脚本,该脚本对全库进行备份,每周六1:00执行
##############################
##author-------***###
##############################
if [ -f ~/.bash_profile ]; then
        . ~/.bash_profile
fi
set -e 

last_day=`date -d "-7 day" +%Y%m%d`
#上次数据备份时间

stime=`date +%s`
echo `date +"%F %T"`################### 全库备份开始##################
cd /mnt/sd02/oracle_bak_68/
#备份数据存放目录

 /data/app/oracle/product/11.2.0/dbhome_1/bin/exp system/manager inctype=complete file=sys_all_`date +%Y%m%d`.dmp log=sys_all_`date +%Y%m%d`.log
#声明exp路径,有些环境下不声明在定时任务中报错找不到该命令

rm sys_all_${last_day}.dmp
rm sys_all_${last_day}.log
#删除上周完全备份文件

etime=`date +%s`
s=`echo "scale=0; ($etime - $stime)%60" | bc`
m=`echo "scale=0; ($etime - $stime)/60%60" | bc`
h=`echo "scale=0; ($etime - $stime)/60/60" | bc`

echo `date +"%F %T"`################全库备份结束#####################
echo `date +"%F %T"` end 脚本执行耗时 $h 小时 $m 分钟 $s 秒

    定时任务中备份策略设置如下:

####全库备份用脚本,每周六早上一点执行
01 01 * * 6 sh /home/oracle/zcb/oracle_all_bak.sh >>/home/oracle/zcb/log/oracle_all_`date +"\%Y\%m\%d"`.log 2>&1
####增量备份脚本,每周日,周一,周二,周四,周五 执行
00 01 * * 0 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_incremental_`date +"\%Y\%m\%d"`.log 2>&1
00 01 * * 1 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_incremental_`date +"\%Y\%m\%d"`.log 2>&1
00 01 * * 2 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_incremental_`date +"\%Y\%m\%d"`.log 2>&1
00 02 * * 4 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_incremental_`date +"\%Y\%m\%d"`.log 2>&1
00 01 * * 5 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_incremental_`date +"\%Y\%m\%d"`.log 2>&1
####累积备份脚本,每周三执行
00 01 * * 3 sh /home/oracle/zcb/oracle_cumulative_bak.sh >>/home/oracle/zcb/log/oracle_cumulative_`date +"\%Y\%m\%d"`.log 2>&1
    谢谢观看,希望本文对您所遇到的问题能有所帮助!


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值