暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据文件管理不当导致 Oracle ADG 复制进程异常案例分析

想学会更多实用技巧,欢迎加入青学会MOP技术社区(实名社区)。

加入方法:公众号后台回复关键字“加入”获取小助手微信,添加后登记入会。

同时欢迎大家在评论区留言互动交流!社区会不定期举行相关的抽奖、公开分享活动。

如果你有想了解的知识点希望我们发文可以后台私信。

本期投稿人

杜兴春

Oracle ACE ,PG ACE 获得 11g OCM、12c OCM、PGCM、RHCE、KCP、ACP、DCP等多项认证。公众号:老杜随笔

擅长数据库优化与故障处理,主要从事Oracle、PostgreSQL数据库运维管理工作,

服务于政府、医疗、电力、金融等领域. 兴趣广泛,喜欢听歌、读书

正文开始

某次核心Oracle RAC 的ADG数据库出现复制进程异常告警,应用连接备库报错,第一时间连库检查,发现从库上的MRP0进程没有了,检查alert日志看到ORA-01274错误,怀疑是有人做了添加数据文件的操作,内部询问后确实有人对其操作,后将其恢复。

分析过程

1、从库alert日志如下:

[edia Recovery Waiting for thread 1 sequence 921276 (intransit)
Recovery of Online Redo Log: Thread 1 Group 72 Seq 921276Reading mem 0
Mem# 0:+DATA/ractd/onlinelog/group_72.393.965631001
File #2172 added to control file as 'UNNAMED02172'because
the parameter STANDBY_FILE_MANAGEMENT is set toMANUAL
The file should be manually created to continue.
MRP0: Background Media Recovery terminated with error1274
Errors in file u01/app/oracle/diag/rdbms/ractd/racdb1/trace/racdb1_pr00_8585508.trc:
ORA-01274: cannot add datafile '+ data/tb01' -file could not be created
Mon Apr 18 17:21:10 2024
Managed Standby Recovery not using Real Time Apply
Mon Apr 18 17:21:17 2024
Recovery interrupted!
Mon Apr 18 17:21:39 2024
Recovered data files to a consistent state at change15893497106246
Mon Apr 18 17:21:39 2024
……………….
Mon Apr 18 17:21:40 2024
Mon Apr 18 17:21:40 2024
LMS 3: 0 GCSshadows cancelled, 0 closed, 0 Xw survived
LMS 1: 0 GCSshadows cancelled, 0 closed, 0 Xw survived
Mon Apr 18 17:21:40 2024
LMS 2: 0 GCSshadows cancelled, 0 closed, 0 Xw survived
Set master nodeinfo
Submitted allremote-enqueue requests
Dwn-cvts replayed,VALBLKs dubious
All grantableenqueues granted

Reconfiguration complete
Mon Apr 18 17:22:02 2024
Block change tracking service stopping.
Mon Apr 18 17:22:02 2024
Stopping background process CTWR
Mon Apr 18 17:22:03 2024
MRP0: Background Media Recovery process shutdown (racdb1)
Mon Apr 18 17:22:06 2024
Archived Log entry 124724 added for thread 1 sequence921276 ID 0xffffffffeab48e3c dest 1:
Mon Apr 18 17:23:13 2024
RFS[233]: Selected log 72 for thread 1 sequence 921278dbid -357299396 branch 822617764
Mon Apr 18 17:23:19 2024
Archived Log entry 124725 added for thread 1 sequence921277 ID 0xffffffffeab48e3c dest 1:
Mon Apr 18 17:24:20 2024
RFS[233]: Selected log 71 for thread 1 sequence 921279dbid -357299396 branch

发现ORA-01274: cannot add datafile '+ data/tb01' -file could not be created

2、从库查看数据文件信息

SQL> set lines 150 
SQL> col name format a50
SQL> select FILE#, NAME, STATUS from v$datafile;
    FILE# NAME                                               STATUS
---------- -------------------------------------------------- -------
        1 u01/app/oracle/oradata/DGORCL/system01.dbf         SYSTEM
        .........
      121 u01/app/oracle/product/19.9.0/db_1/dbs/UNNAMED02172

3、检查复制进程,发现MRP0不在了

SQL> select process, sequence#, status, delay_mins from v$managed_standby;

PROCESS   SEQUENCE# STATUS       DELAY_MINS
--------- ---------- ------------ ----------
ARCH               7 CLOSING               0
ARCH               0 CONNECTED             0
ARCH               0 CONNECTED             0
ARCH               0 CONNECTED             0
RFS               0 IDLE                 0
RFS               45 IDLE                 0
SQL> show parameter STANDBY_FILE_MANAGEMENT

NAME                                 TYPE       VALUE
------------------------------------ ----------- ------------------------------
standby_file_management             string     MANUAL
SQL>

4、原因分析

从警告日志和一些参数看,备库中一些归档日志无法被应用。主库在添加数据文件时加到本地(asm)中,主库添加的数据文件,一切正常,备库由于STANDBY_FILE_MANAGEMENT参数设置的问题,导致数据文件无法应用到本地。Standby_file_management参数为STANDBY_FILE_MANAGEMENT=MANUAL造成不会自动管理数据文件,主库增加了数据文件,备库不会自动增加, 因此若不处理UNNAMED02172这个数据文件的话,则备库在应用redo时就会出错,提示找到文件,就会出现不能应用日志的情况。要想能正常应用日志,先处理UNNAMED02172的文件,处理后备库先应用unname文件,然后才能按日志的顺序应用。

若数据库应用日志的先后顺序是这样:redo1->redo2->redo3……..,在添加数据文件时,当时redo用到了 RFS[218]: Selectedlog 108 for thread 2 sequence 83916 dbid -357299396

处理步骤

1、修改standby_file_management:

SQL> alter system set  STANDBY_FILE_MANAGEMENT=auto sid='*' scope=both;

System altered.

SQL>

2、通过control file手工创建数据文件

SQL> alter database create datafile
'/u01/app/oracle/product/11.2.0/db_1/dbs/UNNAMED02162' as '+data/datafile/';

3、启动恢复:

SQL> alter database recover managed standby databasedisconnect from session;

4、检查一下是否同步

SQL> select to_char(checkpoint_time,'yyyy-mm-dd hh24:mi:ss') from v$datafile;
SQL> select process, sequence#, status, delay_mins from v$managed_standby;
PROCESS   SEQUENCE# STATUS       DELAY_MINS
--------- ---------- ------------ ----------
ARCH               7 CLOSING               0
ARCH               0 CONNECTED             0
ARCH               0 CONNECTED             0
ARCH               0 CONNECTED             0
RFS               0 IDLE                 0
RFS               45 IDLE                 0
MRP0               52 APPLYING _LOG       0

5、主库切归档

SQL> alter system archive log current;

System altered.

至此adg同步正常。

总 结

一般在添加数据文件时需要主要如下参数:

备库

standby_file_management

db_FILES

DB_FILE_NAME_convert

LOG_FILE_NAME_CONVERT

查看应用日志状态:

select value from v$dataguard_stats wherename='apply lag';




END

往期文章回顾

MOP社区新闻

  青学会MOP技术社区成立了!

  青学会专家顾问团成员介绍

金仓专栏

  告别繁琐!KingbaseES v9数据库一键安装-青学会&金仓专栏(1)

  KingbaseES v9数据库Docker安装-青学会&金仓专栏(2)

  KingbaseES数据脱敏-青学会&金仓专栏(3)

  KingbaseES后台服务管理-青学会&金仓专栏(4)

  电科金仓KES日常运维命令集锦-青学会&金仓专栏(5)

DBA实战小技巧

  推荐一款超实用的openGauss数据库安装工具!

  实战:记一次RAC故障排查
  DBA实战运维小技巧安装篇(一)Oracle 主流版本不同架构下的静默安装指南
  DBA实战运维小技巧存储篇(一)根目录满了如何处理
  DBA实战运维小技巧存储篇(二)打包迁移单机数据库至新存储

MOP社区投稿-内核开发

  浅谈 PostgreSQL GUC 模块原理

  简单解析 IvorySQL 增强 Oracle xml 兼容能力的原理

  简单讨论 PostgreSQL C语言拓展函数返回数据表的方式

  简单分析 pg_config 程序的作用与原理
  Redis 日志机制简介(一):SlowLog
  Redis 日志机制简介(二):AOF 日志
  Redis 日志机制简介(三):RDB 日志
  pg_cron插件使用介绍
  Redis 的指令表实现机制简介
  pg几款源码工具介绍
  Redis 事务功能简介

MOP顾问说

   MOP顾问说:MOP 三种主流数据库常用 SQL(一)

  MOP顾问说:服务器内存

  MOP 顾问说:Linux Nice 值与 CPU 优先级揭秘



文章转载自青年数据库学习互助会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论