温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么实现oracle的exp增量备份

发布时间:2021-11-09 14:51:38 来源:亿速云 阅读:750 作者:iii 栏目:关系型数据库

这篇文章主要讲解了“怎么实现oracle的exp增量备份”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么实现oracle的exp增量备份”吧!

oracle exp增量备份实验

https://blog.csdn.net/sinat_16741503/article/details/72876092

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

导出备件是一种逻辑备份,冷备份和热备份是物理备份。

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

 exp/imp增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。

在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为

export.dmp,必须在命令行中指出要用的文件名。

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

执行增量备份必须满足下列条件:

  1.只对完整数据库备份有效,且第一次需要full=y参数,以后需要inctype=incremental参数。

  2. 用户必须有EXP_FULL_DATABASE的系统角色。

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

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

exp system/oracle inctype=complete file=full.dmp log=full.log

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

exp system/oracle inctype=cumulative file=cumulative_1.dmp log=sys_cumulative_1.log

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

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

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

 周六:完全备份

 周日:增量备份

 周一:增量备份

 周二:增量备份

 周三:累积备份

 周四:增量备份

 周五:增量备份

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

 第一,用命令CREATE DATABASE重新生成数据库结构。

 第二,创建一个足够大的附加回段。

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

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

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

impsystem/oracle inctype=RESTORE FULL=y FILE=周三累积备份文件

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

impsystem/oracle inctype=RESTORE FULL=y FILE=周四累积备份文件

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

impsystem/oracle 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/oracle 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_a

ll_`date +"\%Y\%m\%d"`.log 2>&1

####增量备份脚本,每周日,周一,周二,周四,周五 执行

00 01 * * 0 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_in

cremental_`date +"\%Y\%m\%d"`.log 2>&1

00 01 * * 1 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_in

cremental_`date +"\%Y\%m\%d"`.log 2>&1

00 01 * * 2 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_in

cremental_`date +"\%Y\%m\%d"`.log 2>&1

00 02 * * 4 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_in

cremental_`date +"\%Y\%m\%d"`.log 2>&1

00 01 * * 5 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_in

cremental_`date +"\%Y\%m\%d"`.log 2>&1

####累积备份脚本,每周三执行

00 01 * * 3 sh /home/oracle/zcb/oracle_cumulative_bak.sh >>/home/oracle/zcb/log/oracle_cu

mulative_`date +"\%Y\%m\%d"`.log 2>&1

感谢各位的阅读,以上就是“怎么实现oracle的exp增量备份”的内容了,经过本文的学习后,相信大家对怎么实现oracle的exp增量备份这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI