想学会更多实用技巧,欢迎加入青学会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';
往期文章回顾
MOP社区新闻
金仓专栏
告别繁琐!KingbaseES v9数据库一键安装-青学会&金仓专栏(1)
KingbaseES v9数据库Docker安装-青学会&金仓专栏(2)
DBA实战小技巧
实战:记一次RAC故障排查
DBA实战运维小技巧安装篇(一)Oracle 主流版本不同架构下的静默安装指南
DBA实战运维小技巧存储篇(一)根目录满了如何处理
DBA实战运维小技巧存储篇(二)打包迁移单机数据库至新存储
MOP社区投稿-内核开发
简单解析 IvorySQL 增强 Oracle xml 兼容能力的原理
简单讨论 PostgreSQL C语言拓展函数返回数据表的方式
简单分析 pg_config 程序的作用与原理
Redis 日志机制简介(一):SlowLog
Redis 日志机制简介(二):AOF 日志
Redis 日志机制简介(三):RDB 日志
pg_cron插件使用介绍
Redis 的指令表实现机制简介
pg几款源码工具介绍
Redis 事务功能简介




