0

0

如何解决主库归档被误删导致的DG断链_基于主库SCN的RMAN基于增量恢复备库

P粉602998670

P粉602998670

发布时间:2026-03-11 19:52:03

|

106人浏览过

|

来源于php中文网

原创

备库因主库归档被删导致ORA-00308/ORA-19505报错中断,需以备库控制文件中MIN(FIRST_CHANGE#)为起点,在主库执行RMAN增量备份并传至备库;备库须先CANCEL MRP、MOUNT状态恢复,再用RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL对齐SCN,最后重启MRP。

主库归档被删后备库报 ORA-00308 / ORA-19505

备库自动停止应用、mrp 进程中断,日志里反复出现 ora-00308: cannot open archived logora-19505: failed to identify file,基本就是归档缺失导致的断链。这不是网络或参数问题,是物理文件不可恢复地丢失了——主库上那些 archivelog 已被 rm -rf 或 rman delete archivelog 清掉,且没备份到磁带或异地存储。

此时不能等主库“再生成一遍”,因为归档序列不连续,备库无法跳过缺口;也不能直接重建 DG,成本太高。核心思路是:用主库当前 SCN 为基准,做一次增量备份,把从最近可用归档起点到当前 SCN 的所有变更“打包”传给备库。

RMAN 增量备份必须从备库控制文件中已知的最低 SCN 开始

不是随便选个 SCN 就能备份。RMAN 需要知道“从哪开始追”。这个起点由备库控制文件记录,可通过以下命令查:

SELECT MIN(SEQUENCE#), MIN(FIRST_CHANGE#) FROM V$ARCHIVED_LOG WHERE APPLIED = 'YES';

结果里的 FIRST_CHANGE# 就是关键 SCN(记作 min_scn)。如果备库完全没应用过归档,V$ARCHIVED_LOG 可能为空,则要用:SELECT CURRENT_SCN FROM V$DATABASE; 在主库查,然后减去约 10 万(留安全余量),作为保守起点。

  • 务必在主库执行备份,且目标是备库能访问的共享路径(如 NFS)或拷贝到备库本地
  • 命令必须带 FROM SCN <min_scn></min_scn>,不能只用 INCREMENTAL LEVEL 1
  • 避免用 BACKUP INCREMENTAL FROM SCN ... DATABASE 直接备份整个库——太慢;应加 PLUS ARCHIVELOG 并指定 FORMAT 控制输出位置

备库恢复前必须先切换到 MOUNT 状态并关闭 MRPR 进程

很多人卡在这步:一边 RMAN 恢复一边还开着 MRP,结果报 ORA-16025: parameter LOG_ARCHIVE_DEST_n contains repeated or invalid attributes 或静默失败。MRP 是只读应用进程,和恢复冲突。

皮卡智能
皮卡智能

AI驱动高效视觉设计平台

下载

操作顺序不能错:

  • 在备库执行:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
  • 再执行:SHUTDOWN IMMEDIATESTARTUP MOUNT
  • 确认 V$MANAGED_STANDBY 中 MRP 进程状态为 NOT APPLYING 或已消失
  • 恢复命令里必须包含 RECOVER DATABASE NOREDO,否则 RMAN 会尝试找归档(而它们已经没了)

恢复完成后重启 MRP 前要校验控制文件与数据文件 SCN 对齐

增量恢复完直接 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT,大概率报 ORA-01152: file 1 was not restored from a backup taken before the beginning of online backup 或同步卡住。这是因为控制文件里记录的检查点 SCN 和数据文件头不一致。

必须手动同步一次:

  • 在备库 MOUNT 状态下运行:RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
  • 输入 CANCEL(它不会真恢复,只是对齐 SCN)
  • 再执行:ALTER DATABASE OPEN READ ONLY; 验证能否打开
  • 最后才启动 MRP:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

这个对齐动作极容易被跳过,但它是恢复后 MRP 能持续应用的唯一保障。没有它,备库看起来“恢复成功”,实则下一秒就停在第一个新归档上。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

887

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

460

2024.06.27

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

287

2023.11.13

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

222

2023.12.29

oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

271

2023.08.16

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

220

2023.09.15

oracle怎么分页
oracle怎么分页

实现分页的步骤:1、使用ROWNUM进行分页查询;2、在执行查询之前进行设置分页参数;3、使用"COUNT(*)"函数来获取总行数,并使用"CEIL"函数来向上取整计算总页数;4、在外部查询中使用"WHERE"子句来筛选出特定的行号范围,以实现分页查询。想了解更多oracle怎么分页的文章,可以来阅读本专题先的文章。

245

2023.09.18

Oracle查看表操作历史记录
Oracle查看表操作历史记录

查看操作历史记录的方法:1、使用Oracle内置的审计功能,可以记录数据库中发生的各种操作,包括登录、DDL语句、DML语句等;2、使用Oracle日志文件,其中包含了数据库中发生的各种操作,可以通过查看日志文件来获取操作历史记录;3、使用Oracle的Flashback功能,可以查看数据库在某个时间点的操作历史记录;4、使用第三方工具等。本专题还提供其他查看表操作的文章,大家可以免费阅读。

463

2023.09.19

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号