如何实现oracle exp增量备份
Oracle exp增量备份实验
https://blog.csdn.net/sinat_16741503/article/details/72876092
Oracle数据库有三种标准备份方式,它们是导出/导入(EXP/IMP、EXPDP/IMPDP)、热备份和冷备份。
备件导出是逻辑备份,冷备份、热备份是物理备份。
exp支持增量备份,但expdp不支持增量备份。
exp/imp增量导出是一种常用的数据备份方式。只能针对整个数据库实现,并且必须导出为SYSTEM。
此导出不会提出任何问题。默认导出f文件名称是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_1.dmp log=sys_cumulative_1.log
3.增量备份:备份上次“备份”后更改的信息
exp system/oracle inctype=incremental file=sys_cumulative_3.dmp log=sys_cumulative_3.log
比如我设置了一个Oracle备份策略:
周六:全量备份
周日:增量备份
p>周一:增量备份
< p> 星期二:增量备份星期三:累积备份
星期四:增量备份
星期五:增量备份
那么当我的数据库周六被破坏了(备份前),恢复数据库的过程是怎样的,即:
首先,使用命令CREATE DATABASE重新生成数据库结构。
其次,创建一个足够大的附加循环段。
三、全量备份导入(周六)
imp system/oracle inctype=RESTORE FULL=y FILE=周六全量备份文件
四、累计备份导入(星期三)
impsystem/oracle inctype=RESTORE FULL=y FILE=星期三累计备份文件
五、增量备份导入(周四)
impsystem/oracle inctype=RESTORE FULL=y FILE=周四的累积备份文件
六、增量备份import (星期五)
impsystem/oracle inctype= RESTORE FULL=y FILE=星期五的累积备份文件
注意:使用这种方法备份Oracle数据库有一个缺点,也就是说,数据库宕机前最后一次备份的数据将会丢失。
--以下是博主自己写的全量备份策略脚本。可以修改累积备份和增量备份的一些参数:
#!/bin/bash
#Oracle数据库备份脚本,该脚本备份整个数据库,每周六执行一次1:00
################################
##作者--------***###
### ##########################
如果 [ -f ~/.bash_profile ];然后
< p> 。 ~/.bash_profilefi
set -e
last_day=`date -d "-7 天" +%Y%m%d ` p>
#Last数据备份时间
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=`日期 +%s`
s=`echo "scale=0; ($etime - $stime)%60" | bc` p>
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 秒
--备份策略设置定时任务中的ngs如下:
####数据库全备份脚本,每周六凌晨1点执行
01 01* * 6 sh /home/ oracle/zcb/oracle_all_bak.sh >>/home/oracle/zcb/log/oracle_a
ll_`日期 +"\%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_`日期 +"\%Y\%m \%d "`.log 2>&1
00 01 * * 2 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_in
< p>cremental_ `date +"\%Y\%m\%d"`.log 2>&100 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/或acle/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增量备份有了更深入的了解,具体的用法需要在实践中验证,这里小编会为大家推送更多相关知识点的文章,欢迎关注!< /p>
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何实现oracle exp增量备份