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

11.备库出现gap处理方法

备库检查是否有日志缺失:
select * from v$archive_gap;
THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#


1 99 109
从上面的信息可以看出,备库中缺失了99到109的日志。

select name from v$archived_log where thread#=1 and dest_id=1 and sequence# between 99 and 109;

把日志拷贝到备库上,4、在备库上手工注册上一步中从主库拷贝来的日志
alter database register logfile '/u01/archivelog/1_99_626106231.arc';

稍等片刻,观察备库的alert日志信息 :
Sun Aug 12 20:38:47 2007
Media Recovery Log /u01/archivelog/1_99_626106231.arc
Media Recovery Log /u01/archivelog/1_100_626106231.arc
Media Recovery Log /u01/archivelog/1_101_626106231.arc
Media Recovery Log /u01/archivelog/1_102_626106231.arc
从以上信息,可以看出之前注册的日志已经被正常应用。或者查询视图v$archived_log的applied字段

检查备库是否还有日志GAP
SQL> select * from V$ARCHIVE_GAP;

gap较多,主库增量备份到备库进行恢复

备库操作:查看gap、scn等

1、备库确认丢失归档信息
SQL>select * from v$archive_gap;

2、备库确认最小scn号

在备库上执行:

1)停止日志应用服务
SQL>alter database recover managed standby database cancel;

2)查看备库当前的scn
SQL>select current_scn from v$DATABASE;
CURRENT_SCN

39597750709

3)查看文件头部的最小scn
SQL>select min(f.checkpoint_change#) from v$datafile_header f,v$datafile d where f.file#=d.fileand d.enabled !='READ ONLY';
CURRENT_SCN

39597657793

以上分别查出了备库当前的scn和文件头部的最小scn,采用两者最小的scn在主库进行增量备份

4.2.主库确认增量备份

SQL>select file#,to_char(creation_time,'yyyy-mm-dd hh24:mi:ss' ) creation_time,status,last_time,name from v$datafile where creation_change#>39597657793;

4.3.主库进行增量备份、创建备库控制文件

1、主库执行增量备份
RMAN>backup as compressed backupset incremental from scn 1276181632 database format'/backupdata/incr_bak_full_%U.bak'

2、主库备份控制文件
SQL>alter database create standby controlfile as '/backupdata/ctl20190829_bak.ctl';

3、主库拷贝备份到备库
[oracle@rac2 backupdata]$ scp ctl20190829_bak.ctl oracle@172.16.10.115:/archdata
[oracle@rac2 backupdata]$ scp incr_bak_full_0iuae673_1_1.bak oracle@172.16.10.115:/archdata

4.4.备库恢复

1、备份备库的控制文件
SQL>startup mount --备库首先启动至mount状态

RMAN>backup current controlfile format '/archdata/ncdg_bak_20190829.ctl'; --备份当前备库的控制文件

2、备库启到nomount状态,恢复主库备份过来的新的控制文件
SQL>startup nomount --启动数据库到nomount状态

RMAN>restore controlfile from '/archdata/ctl20190829_bak.ctl';

3、备库mount,将主库备份的增量备份文件,注册到catalog库
SQL>alter database mount

RMAN>catalog start with '/archdata/incr_bak_full_0iuae673_1_1.bak';

3、备库恢复
RMAN>recover database noredo;

4.5.验证结果

1、备库: 执行接收并恢复日志操作

1)恢复日志应用
SQL> alterdatabase recover managed standby database disconnect from session;

2)检查是否还有gap
SQL> select * fromv$archive_gap;

3)检查最大的日志
SQL> select THREAD#,max(SEQUENCE#) from v$archived_log group by THREAD#;
THREADMAX(SEQUENCE#)


     1           3729

2、主库:验证结果

1)检查最大日志
SQL> select THREAD,max(SEQUENCE#) from v$archived_log group by THREAD#;
THREADMAX(SEQUENCE#)


    1           3729

2)Primary进行日志切换,查看standby告警日志。
SQL>alter system switch logfile;
SQL>alter system checkpoint;

gap较多,主库duplicate全库备份恢复到备库

5.5.1.备库操作:查看gap、scn等

1、备库确认丢失归档信息
SQL>select * from v$archive_gap;

2、备库停止日志应用服务

SQL>alter database recover managed standby database cancel;

5.2.主库进行duplicate在线全备并恢复到备库

主库oracle用户执行
rman target sys/oracle@ncdb1 auxiliary sys/oracle@ncdg
RMAN>duplicate target database for standby from active database;

5.3.备库验证恢复完成

备份备库的控制文件
SQL>select open_mode,PROTECTION_LEVEL,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;

5.4.验证结果

1、备库: 执行接收并恢复日志操作

1)恢复日志应用
SQL> alterdatabase recover managed standby database disconnect from session;

2)检查是否还有gap
SQL> select * fromv$archive_gap;

3)检查最大的日志
SQL> select THREAD#,max(SEQUENCE#) from v$archived_log group by THREAD#;
THREADMAX(SEQUENCE#)


     1           3729

2、主库:验证结果

1)检查最大日志
SQL> select THREAD,max(SEQUENCE#) from v$archived_log group by THREAD#;
THREADMAX(SEQUENCE#)


    1           3729

2)Primary进行日志切换,查看standby告警日志。
SQL>alter system switch logfile;
SQL>alter system checkpoint;

http://www.rkmt.cn/news/10105.html

相关文章:

  • 修改Abp中Auto API Controllers中 默认生成的 Put、Delete请求
  • 电阻-温度数据拟合工具(最小二乘法)
  • delphi clientdataset 中文过滤问题
  • 基于 systemd 的 Go 应用自动化部署完整指南
  • 指令流水线的影响因素
  • [vscode] 快捷键记录
  • 工业级CAD数据优化工具:PiXYZ Studio 2025 图文安装指南
  • (转)使用 Embarcadero Delphi FMX 应用程序实现多点触控
  • YKM-1Z-16
  • 如何做好研发项目的资源分配
  • Midscene.js - 开源的 AI 操作助手 - 广东靓仔
  • Day20类与对象的小结
  • 克服getLocation获取当前的地理位置,报错:getLocation:fail auth deny及方法封装
  • 电流探头的测试原理
  • p1-1002
  • Java中 String、StringBuilder 和 StringBuffer 的区别? - 指南
  • 解析 Authenticode 部分代码。
  • 实用指南:力扣2132. 用邮票贴满网格图
  • ONCHAINID源码分析(二)
  • 鸿蒙应用开发从入门到实战(十二):ArkUI组件ButtonToggle
  • 从视觉、文案到交互:三步彻底去除产品AI味
  • 剑指offer-32、把数组排成最⼩的数
  • python微博舆情分析系统 情感分析 爬虫 机器学习 新浪微博 信息采集 大数据工艺(源码)✅
  • C# 中的 ReferenceEquals 方法 - 教程
  • 【一周AI资讯】Claude自动抓取网页;美团发布生活Agent;阿里通义发布双模型 - 详解
  • 读人形机器人20财富再分配
  • Java 与人工智能的深度融合:从数据到推理服务
  • 基于 Vite7 与 Vue3 的 WebOS 后台系统架构实践
  • pycharm环境配置
  • 为什么 TCP 是3次握手4次挥手?