Oracle 12c Data Guard 环境中的 GAP 修复方法
概述
上文中提到Oracle 12c 引入了多项新技术来简化 Data Guard 环境中的 GAP 修复过程,如(RECOVER … FROM SERVICE)。这些新特性不仅减少了操作步骤,还提高了效率和准确性。本文档将详细说明如何利用这些新特性进行 GAP 修复。
示例场景
为了更好地理解整个过程,我们假设以下情景:
- 模拟备库断电:备库突然断电,导致与主库之间的日志同步中断。
- 主库切几个最新的归档:主库继续工作并切换了多个归档日志。
- 手工删除归档日志:模拟过程中手工删除了一些归档日志文件。
- 重新开启 DG 同步:尝试重新同步时发现存在 GAP。
步骤详解
1. 记录备库当前 SCN 号
首先,记录备库当前的 SCN 号,以便后续使用。
-- 在备库上查询当前 SCN 号
SQL> SELECT CURRENT_SCN FROM V$DATABASE;
CURRENT_SCN
-----------
47879834
2. 使用 RECOVER STANDBY USING SERVICE 恢复
采用 RMAN 的新功能 recover standby using service,通过 RMAN 连接到 target 备库,并用主库的服务名执行恢复命令。
语法:
RECOVER DATABASE FROM SERVICE <primary_db_service_name> NOREDO USING COMPRESSED BACKUPSET;
注意:确认主库的 TNS 已配置,这里的 <primary_db_service_name> 即 TNSNAME。
具体步骤:
-
启动备库到 NOMOUNT 状态:
SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP NOMOUNT; -
从主库恢复控制文件:
RUN {RESTORE STANDBY CONTROLFILE FROM SERVICE <primary_service_name>;ALTER DATABASE MOUNT; }这里
<primary_service_name>是主库的服务名,例如orcl-- 备库恢复控制文件 RMAN> RESTORE STANDBY CONTROLFILE FROM SERVICE orcl; -- 备库启动到mount状态 SQL> ALTER DATABASE MOUNT; -
检查主备 GAP 期间是否添加了数据文件:
查询备库上数据文件头最小的 SCN
SELECT MIN(fhscn) FROM x$kcvfh; -- 示例输出: 47879834在主库上查询低 SCN 后新增加的数据文件
SELECT FILE# FROM V$DATAFILE WHERE CREATION_CHANGE# >= <min_scn>; -- 示例中 <min_scn> 为 47879834,查询得到缺失的数据文件号为 158。-- 查询在指定 SCN 后新增的数据文件 SQL> SELECT FILE# FROM V$DATAFILE WHERE CREATION_CHANGE# >= 47879834; FILE# ---------- 158 -
恢复新添加的数据文件:
RMAN> RUN {SET NEWNAME FOR DATABASE TO '/oradata/ORCL_STBY/%f_%U';RESTORE DATAFILE 158 FROM SERVICE orcl; } -
如果主备数据文件目录不一致,修改控制文件中数据文件位置:
RMAN> CATALOG START WITH '/oradata/ORCL_STBY/'; RMAN> SWITCH DATABASE TO COPY; -
重命名临时文件和日志文件
-
设置
STANDBY_FILE_MANAGEMENT为手动:SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL; -
清除日志文件组:
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1; SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2; SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3; ... -- 重复以上命令直至所有需要清除的日志文件组都被处理。 -
重命名日志文件:
SQL> ALTER DATABASE RENAME FILE '/oradata/ORCL/redo01.log' TO '/oradata/ORCL_STBY/redo01.log'; ... SQL> ALTER DATABASE RENAME FILE '/oradata/ORCL/standby_redo04.log' TO '/oradata/ORCL_STBY/standby_redo04.log'; ... -- 重复以上命令直至所有需要重命名的日志文件都被处理。 -
重命名临时文件:
SQL> ALTER DATABASE RENAME FILE '/oradata/ORCL/temp01.dbf' TO '/oradata/ORCL_STBY/temp01.dbf'; ... -- 重复以上命令直至所有需要重命名的临时文件都被处理。 -
设置
STANDBY_FILE_MANAGEMENT为自动:SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
-
-
恢复主备 GAP:
RMAN> RECOVER DATABASE FROM SERVICE orcl NOREDO USING COMPRESSED BACKUPSET;注意:如果主备库文件目录不一致,则需要 catalog 切换控制文件中路径,否则报错。
3. 开启备库日志应用,检查同步情况
-
检查主备 SCN 是否一致:
SQL> SET LINE 300 SQL> COL HXFNM FOR A100 SQL> SELECT HXFIL File_num, SUBSTR(HXFNM, 1, 40) HXFNM, FHSCN FROM x$kcvfh; -
主库切几次归档:
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT; SQL> ALTER SYSTEM SWITCH LOGFILE; -
开启备库应用日志:
SQL> ALTER DATABASE OPEN; SQL> ALTER PLUGGABLE DATABASE ALL OPEN; SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; -
查看备库同步是否正常:
SQL> SET LINE 300 SQL> COL MEMBER FOR A60 SQL> SELECT T1.GROUP#, T1.THREAD#, T1.BYTES / 1024 / 1024, T1.STATUS, T2.MEMBER FROM GV$STANDBY_LOG T1, GV$LOGFILE T2 WHERE T1.GROUP# = T2.GROUP#; -
测试同步情况:
-
在主库插入数据:
SQL> INSERT INTO test.test VALUES (999); SQL> COMMIT; -
在备库查询是否实时同步:
SQL> ALTER SESSION SET CONTAINER=pdb01; SQL> SELECT * FROM test.test;
-
方法二:通过网络服务直接增量恢复(适用于 12c 及以上版本)
-
连接目标数据库
CONNECT TARGET "sys/@orcldg AS SYSDBA" -
设置压缩参数以减少网络带宽
压缩级别选项:
SET COMPRESSION ALGORITHM 'BASIC'; SET COMPRESSION ALGORITHM 'LOW'; SET COMPRESSION ALGORITHM 'MEDIUM'; SET COMPRESSION ALGORITHM 'HIGH';选择合适的压缩级别
SET COMPRESSION ALGORITHM 'HIGH'; -
执行恢复命令
RECOVER DATABASE FROM SERVICE orcl USING COMPRESSED BACKUPSET; -
开启备库应用日志
ALTER DATABASE OPEN; ALTER PLUGGABLE DATABASE ALL OPEN; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; -
验证修复结果
确保所有的修复操作完成后,检查数据库状态以验证 GAP 是否已经成功修复。
-- 查看是否有剩余的 GAP SELECT * FROM V$ARCHIVE_GAP;-- 检查应用的最大序列号 SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG WHERE APPLIED='YES';-- 检查管理进程的状态 SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;
总结
通过上述步骤,可以利用 Oracle 12c 提供的新特性显著简化 Data Guard 环境中的 GAP 修复过程。这些新功能不仅减少了操作复杂度,还提高了效率和准确性。
相关文章:
Oracle 12c Data Guard 环境中的 GAP 修复方法
概述 上文中提到Oracle 12c 引入了多项新技术来简化 Data Guard 环境中的 GAP 修复过程,如(RECOVER … FROM SERVICE)。这些新特性不仅减少了操作步骤,还提高了效率和准确性。本文档将详细说明如何利用这些新特性进行 GAP 修复。…...
力扣 三角dp
动态规划基础题,当前所在元素来自上一行的两列的值。 题目 从图可以看出,每一行的第一个数与最后一个数都是1,然后中间的数是来自它左上方和右上方的数的和。当然并不是要打印这个三角形的形状,因此可以想到正常的打印方式应该是…...
SQL基础语法全解析(上篇)
一、基本概念 1. 数据库术语 数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件)。数据表(table) - 某种特定类型数据的结构化清单。模式(schema) - 关于数据库…...
【笔记】Linux服务器端使用百度网盘
1、在python环境下,下载bypy pip install bypy 2、第一次连接需要认证 bypy info 认证通过后百度网盘会出现bypy文件夹,如下 3、查看当前文件夹下的文件 bypy list 若有很多文件夹,可在后面增加文件夹名称,列出对应位置下的文件&a…...
UEFI Spec 学习笔记---3 - Boot Manager(3)
3.2 Boot Manager Policy Protocol EFI_BOOT_MANAGER_POLICY_PROTOCOL----EFI应用程序使用该协议请求UEFI引导管理器使用平台策略连接设备。 typedef struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL EFI_BOOT_MANAGER_POLICY_PROTOCOL; struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL…...
ATTCK红队评估实战靶场(四)
靶机链接:http://vulnstack.qiyuanxuetang.net/vuln/detail/6/ 环境搭建 新建两张仅主机网卡,一张192.168.183.0网段(内网网卡),一张192.168.157.0网段(模拟外网网段),然后按照拓补…...
Android Studio 历史版本下载
Android Studio 历史版本下载 官方链接:https://developer.android.google.cn/studio/archive 通过gradle插件版本反查Android Studio历史版本 Android Studio Ladybug | 2024.2.1 October 1, 2024 【https://redirector.gvt1.com/edgedl/android/studio/ide-zip…...
微信小程序px和rpx单位互转方法
js代码如下 Page({data: {width: 0,width2: 0},onLoad: function (options) {let px this.pxToRpx(380)let rpx this.rpxToPx(730.7692307692307) // 检查两个互转是否是相同即可,例如pxToRpx(380)转成730.7692307692307 则rpxToPx(730.7692307692307)如果是380则代表互转没…...
Vercel 部署与管理指南:简化前端应用的自动化部署流程
引言 在现代的前端开发中,部署和托管项目一直是开发者关注的重要环节。Vercel,作为一个专注于简化前端开发和部署的平台,凭借其强大的自动化功能、全球内容分发网络(CDN)以及对 Next.js 等框架的优越支持,…...
Java11使用JVM同一日志框架启用日志记录
你可以使用-Xlog选项配置或启用Java虚拟机同一日志框架的日志记录。 -Xlog:gc*trace:file/Users/xx/gc-%t.log:time,tags,level,pid,tid,hostname,path:filecount3,filesize10K -Xlog:gc*trace:stdout:time,tags,level,pid,tid,hostname:filecount3,filesize10K -Xlog:gc*trac…...
onlyoffice实现文档比对(Beta版)-纯文字比对(非OCR)
一、说明 文档比对光靠前端或者后端是无法实现的。 该文中的实现方案为:onlyofficejava。java进行文档差异化比较并输出对比结果,only进行得到结果处理渲染。 此方案目前为Beta版本,简单Word Demo实现了比对结果。css、关联动态效果登将在后期…...
JS querySelector方法的优点
1. 灵活性 支持所有 CSS 选择器 ID 选择器:#id 示例:document.querySelector(#myId)解释:选择 id 为 myId 的元素。类选择器:.class 示例:document.querySelector(.myClass)解释:选择具有 class 为 myCla…...
利用获取商品详情API:item_get可以获取到淘宝商品详情的哪些数据?
先来看下测试的返回数据吧 items: { total_results: 76, totalpage: 8, page_size: 10, page: "1", item: [ { rate_content: "和我家的鞋柜特别搭,加上这一条遮挡布,感觉整洁多了,布料不是硬邦邦的那种,很满意。…...
【大数据学习 | 面经】Spark 3.x 中的AQE(自适应查询执行)
Spark 3.x 中的自适应查询执行(Adaptive Query Execution,简称 AQE)通过多种方式提升性能,主要包括以下几个方面: 动态合并 Shuffle 分区(Coalescing Post Shuffle Partitions): 当 …...
[Vue]Vue-router
路由 对前端路由的理解 在前端技术早期,一个 url 对应一个页面,如果要从 A 页面切换到 B 页面,那么必然伴随着页面的刷新。这个体验并不好,不过在最初也是无奈之举——用户只有在刷新页面的情况下,才可以重新去请求数…...
【HarmonyOS】鸿蒙应用使用lottie动画
【HarmonyOS】鸿蒙应用使用lottie动画 一、lottie动画是什么? https://airbnb.design/lottie Lottie是由Airbnb团队开发的一个适用于iOS、Android、React Native、Web和Windows的开源动画库,用于解析使用Bodymovin导出为JSON的Adobe After Effects动…...
1.使用docker 部署redis Cluster模式 集群3主3从
1.使用docker 部署redis Cluster模式 集群3主3从 1.1 先安装docker 启动docker服务,拉取redis镜像 3主3从我们要在docker启动6个容器docker run --name redis-node-1 --net host --privilegedtrue -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-…...
vue基础之8:computed对比watch
欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...
Luban数据插件的用法
配置后数据后,点击图1中的gen.bat文件启动生成配置数据和解析配置数据代码的程序,自动生成配置数据和解析用到的代码;因为我已经 指定了生成内容的输出路径为Unity项目的路径下面,所以,不用再搬运生成的内容到项目目录…...
指针(上)
目录 内存和地址 指针变量和地址 取地址(&) 解引用(*) 大小 类型 意义 const修饰 修饰变量 修饰指针 指针运算 指针- 整数 指针-指针 指针的关系运算 野指针 概念 成因 避免 assert断言 指针的使用 strl…...
open-parse快速入门:5分钟掌握智能文档解析的终极方法
open-parse快速入门:5分钟掌握智能文档解析的终极方法 【免费下载链接】open-parse Improved file parsing for LLM’s 项目地址: https://gitcode.com/gh_mirrors/op/open-parse open-parse是一款专为LLM(大语言模型)优化的智能文档解…...
megaAVR_PWM硬件PWM库:工业级实时PWM控制详解
1. megaAVR_PWM 库深度技术解析:面向工业级实时控制的硬件PWM实现1.1 工程背景与核心价值定位在嵌入式系统开发中,PWM(脉宽调制)是电机驱动、LED调光、电源管理及伺服控制等场景的基础技术。然而,大量开发者仍依赖anal…...
TwinCAT3进阶指南:台达A2伺服扭矩读取与回零实战
1. TwinCAT3与台达A2伺服的基础配置 在开始扭矩读取和回零操作之前,我们需要先完成TwinCAT3与台达A2伺服的基础配置。这部分工作看似简单,但却是后续所有高级功能的基础。我遇到过不少开发者因为基础配置没做好,导致后面各种奇怪的问题。 首先…...
写作压力小了!盘点2026年倾心之选的的降AIGC平台
轻松降低论文AI率在2026年已不再是天方夜谭。以下是2026年最炸裂、实测效果显著的降AIGC平台神器,覆盖AI痕迹消除、文本改写润色、降重优化、学术合规检测四大核心场景,帮你稳妥搞定毕业论文。 一、全流程王者:一站式搞定论文全链路 这类工具…...
QAnything混合检索实战:ElasticSearch与向量搜索的协同优化
QAnything混合检索实战:ElasticSearch与向量搜索的协同优化 1. 为什么电商搜索总在“猜”用户心思? 你有没有遇到过这样的情况:在电商平台搜索“轻便透气运动鞋”,结果首页全是厚重的登山靴?或者搜“适合夏天穿的连衣…...
从MobileNet到FasterNet:一个ARM安卓开发者的轻量级模型选型与部署实战笔记
从MobileNet到FasterNet:ARM安卓开发者的轻量级模型选型与部署实战 在移动端AI应用开发中,模型选型往往是一场精度与速度的博弈。作为一名长期奋战在ARM平台部署一线的工程师,我经历过太多次这样的场景:产品经理要求"既要实时…...
2026最新大模型应用开发学习路线(附时间规划,小白/程序员必收藏)
一、先破局:初学者必看!Python 还是 Java 选对不踩坑 很多小白和入门程序员,刚接触大模型开发就卡在编程语言选择上,浪费大量时间纠结。不绕弯子,直接给结论,结合AI开发场景帮你精准选择,新手直…...
喜马拉雅音频下载工具:技术实现与高效使用指南
喜马拉雅音频下载工具:技术实现与高效使用指南 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 在数字化学习与娱乐场景…...
3个变革性步骤:用163MusicLyrics彻底解决歌词获取难题
3个变革性步骤:用163MusicLyrics彻底解决歌词获取难题 【免费下载链接】163MusicLyrics Windows 云音乐歌词获取【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 在数字化音乐时代,歌词已不再是简单的文字附…...
别再只防SSH了!给OpenWRT的Web管理后台LuCI也加上fail2ban防护(附日志配置避坑指南)
OpenWRT安全加固:为LuCI管理界面部署fail2ban防护的完整方案 路由器作为家庭网络的入口,其安全性往往被严重低估。大多数用户会记得给SSH服务配置fail2ban防护,却忽略了同样暴露在公网的Web管理界面——LuCI。这种安全防护的"偏科"…...
