当前位置: 首页 > news >正文

Oracle中rman的增量备份使用分享

        继上次使用RMAN的全量备份和异机还原以后,开始研究一下增量备份和还原的方法。相比于全量RMAN的备份还原,增量的备份还原就相对简单。本实践教程直接上操作,还是回归到一个问题,就是关于两个数据库创建时候,必须保持oracle的一致性的原则。数据库的DBID,数据文件、控制文件、归档文件、日志文件的路径都要保持一致性。如有路径不一致不适用本文章所指的增量数据库备份和恢复方法了。

一、实验目标

        将源库的数据在进行增量一次【这里使用impdb导入,操作省略了】,将整体的数据量提升后。因为之前RMAN进行全量备份和全量还原过一次,RMAN已经保留原始数据,使用impdb导入数据泵后,数据量肯定上升了。此刻将进行RMAN的增量备份恢复刚刚好。

二、部署环境参数

VMware部署分别是192.168.188.141(源数据库),192.168.188.152(目标数据库)

三、源数据库的增量数据备份和传输

先确定使用impdp导入数据后,数据的总量多少。之后异机RMAN增量恢复后再查看。

先将脚本rman指令更新为增量备份,然后执行。

更新到以下rman_bak.sh脚本。(如果套用,记得处理自己的数据库路径)

#!/bin/bash
#************************************************************************ 
#*** rman_bak_L0.sh *** 
#************************************************************************ 
#!/bin/bash
source /home/oracle/.bash_profile
rq=`date +%Y%m%d`
bakdir=/home/oracle/topsoft/rmanbak/${rq}
autobak=/home/oracle/topsoft/rmanbak/autobackup/
if [ ! -d ${bakdir} ];
then mkdir -p ${bakdir}
fi
if [ ! -d ${autobak} ];
then mkdir -p ${autobak}
fi
cd $ORACLE_HOME/bin 
./rman target / log=$bakdir/rmanfull_${rq}.log   <<EOF
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${autobak}/%F';
run { 
allocate channel c1 type disk; 
allocate channel c2 type disk;
allocate channel c3 type disk; 
allocate channel c4 type disk;
allocate channel c5 type disk; 
allocate channel c6 type disk;
sql 'alter system archive log current';
backup as compressed backupset incremental level 1 database tag 'dbfull' format '${autobak}/backlv0_%d_%T_%t_%s_%p.bak';
sql 'alter system archive log current';
backup as compressed backupset archivelog all tag 'arch' format '${autobak}/arch_%d_%T_%t_%s_%p.bak';
backup current controlfile format '${autobak}/ctl_%d_%T_%t_%s_%p.bak';
release channel c1; 
release channel c2;
release channel c3; 
release channel c4;
release channel c5; 
release channel c6;
} 
report obsolete; 
crosscheck backup;
crosscheck archivelog all;
delete noprompt obsolete;
delete noprompt expired backup;
list backup summary; 
exit; 
EOF
echo "备份数据完成."

先关闭监控端口,再执行脚本rman_bak.sh,然后检查备份文件是否全部备份完毕。

RMAN的数据增量备份已经完成,使用xftp可以看到路径下面有备份文件

将源库下面的autobackup文件夹中的所有增量文件传送到目标库中

在目标库(x.x.188.152)中有源数据库的增量数据文件了

四、目标数据库的接收增量数据

开启数据库ORACLE的监控,查看监控的1521端口是否开放了

查看源数据库的备份文件是否存在目标库对应的文件路径中

启动rman工具窗口,将数据库关闭,使用归档模式启动数据库。


将增量的数据集增加到rman中

增加rocover恢复增量数据库

开启目标数据库的归档模式和开启日志追踪记录功能

$ sqlplus "/as sysdba"
SQL> shutdown immediate
SQL> startup mount;
SQL> alter database open resetlogs;
​
# 进行简单查询,确认业务数据状态;

四、验证环节

然后使用数据库工具PL/SQL进行源数据库和目标数据库的数据量进行对比

执行这个语句查看两个数据库的表空间使用量对比

SELECT UPPER(F.TABLESPACE_NAME)                                                                 "表空间名",D.TOT_GROOTTE_MB                                                                         "表空间大小(M)",D.TOT_GROOTTE_MB - F.TOTAL_BYTES                                                         "已使用空间(M)",TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100, 2), '990.99') "使用比",F.TOTAL_BYTES                                                                            "空闲空间(M)",F.MAX_BYTES                                                                              "最大块(M)"
FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTESFROM SYS.DBA_FREE_SPACEGROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME,ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MBFROM SYS.DBA_DATA_FILES DDGROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 4 DESC;

两个库之间的数据库业务表空间使用量一致,两个库之间的数据库业务使用量是一致的了。但是有点不一致是在于SYSAUX和UNDOTBS1的表空间使用量不同了(可能是我增量数据使用表空间的物理文件创建,而没有使用impdp或者imp导入数据导致

对比数据的总量差了4个G的数据量。(正好是我创建的2个表空间的物理文件每个都是2G,占了4个的内存

select   tablespace_name,   file_id,   file_name,   
round(bytes/(1024*1024*1024),0)   total_space   
from   dba_data_files   
order   by   tablespace_name; 

还有一点的不同就是SYSTEM的表空间的物理文件不同,源库有两个,目标库有一个。

总结:

     RMAN的增量数据恢复其实难度不大。主要几个细节把握住,第一是源库备份恢复时候记得关闭数据库监控,让应用写数据时候写不进去。这样数据不会丢失。第二最好先进行RMAN的全备一次在进行增量恢复,这样恢复效率快点。只需要恢复数据集即可,不需要恢复控制文件、更新参数文件。也不需要其他操作。第三就是目标库恢复时候记得开启归档模式,恢复后记得开启相关日志服务。

我再抛个问题:为什么RMAN的增量恢复没有完全恢复全部数据了,只有业务数据恢复,但是系统数据的物理文件没有恢复过去了。

顺便再请教一下各位大佬,我得操作有没有问题。如果有问题,麻烦评论区指出来了。

参考文件:Oracle数据库离线增量备份与恢复-云社区-华为云

相关文章:

  • vue3 前端实现导出下载pdf文件
  • AI实时免费在线图片工具3:人物换脸、图像编辑
  • Nginx企业级负载均衡:技术详解系列(15)—— 一篇文章教你如何自定义错误日志
  • 【C++】问题及补充(2)
  • LeetCode 每日一题 数学篇 2894.分类求和并作差
  • React 组件通信
  • 企业文件加密:保障知识产权与客户隐私
  • 【微服务】docker部署redis,一主二从三哨兵,读写分离
  • Golang | Leetcode Golang题解之第119题杨辉三角II
  • 【设计模式深度剖析】【5】【结构型】【桥接模式】| 以电视和遥控器为例加深理解
  • 【浅水模型MATLAB】尝试完成一个数值模拟竞赛题
  • Rye: 一个革新的Python包管理工具
  • Docker(Centos7+)
  • 气膜建筑的消防设计—轻空间
  • antd学习笔记
  • CSS居中完全指南——构建CSS居中决策树
  • ESLint简单操作
  • flutter的key在widget list的作用以及必要性
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Material Design
  • PHP 的 SAPI 是个什么东西
  • ReactNative开发常用的三方模块
  • sessionStorage和localStorage
  • SpringCloud集成分布式事务LCN (一)
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Terraform入门 - 3. 变更基础设施
  • Twitter赢在开放,三年创造奇迹
  • Vue2 SSR 的优化之旅
  • vue-router的history模式发布配置
  • 包装类对象
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 规范化安全开发 KOA 手脚架
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 十年未变!安全,谁之责?(下)
  • 使用 5W1H 写出高可读的 Git Commit Message
  • ionic异常记录
  • ​MySQL主从复制一致性检测
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #微信小程序:微信小程序常见的配置传值
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (2015)JS ES6 必知的十个 特性
  • (LeetCode C++)盛最多水的容器
  • (第一天)包装对象、作用域、创建对象
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (过滤器)Filter和(监听器)listener
  • (黑马C++)L06 重载与继承
  • (四)js前端开发中设计模式之工厂方法模式
  • (算法)Travel Information Center
  • (一)kafka实战——kafka源码编译启动
  • (转)ABI是什么
  • (转)详解PHP处理密码的几种方式
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net core 依赖注入的基本用发
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径