共计 3143 个字符,预计需要花费 8 分钟才能阅读完成。
这篇文章主要讲解了“怎么实现 oracle 的 exp 增量备份”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“怎么实现 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 增量备份这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!