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

ADG备库不同步问题小记

IT那活儿 2022-01-30
2114
点击上方“IT那活儿”,关注后了解更多精彩内容!!

背景说明

在22:09分收到客户反馈AAA主库创建表空间,备库查询不到相应表空间,随即进行排查。。。

故障具体分析

1. 进行数据库alert排查
AAA备库 alert主要收集到重要信息如下:
Thu Dec 23 00:18:05 2021Media Recovery Waiting for thread 1 sequence 82 (in transit)Recovery of Online Redo Log: Thread 1 Group 9 Seq 82 Reading mem 0Mem# 0: /data/u01/oracle/oradata/stredo01.logThu Dec 23 16:34:03 2021Errors in file /data/u01/oracle/diag/rdbms/aaadbdg/AAADBDG/trace/AAADBDG_pr00_12137.trc:ORA-01264: Unable to create datafile file nameORA-19800: Unable to initialize Oracle Managed DestinationLinux-x86_64 Error: 13: Permission deniedFile #13 added to control file as 'UNNAMED00013'.Originally created as:'/data/u01/oracle/oradata/aaa_obs_data_01.dbf'


2. 进行alert中上述trc文件重要信息收集


*** 2021-12-23 16:34:03.848ORA-19800: Unable to initialize Oracle Managed DestinationLinux-x86_64 Error: 13: Permission deniedFile #13 added to control file as 'UNNAMED00013'.Originally created as:'/data/u01/oracle/oradata/aaa_obs_data_01.dbf'Recovery was unable to create the file as a new OMF file.*** 2021-12-23 16:34:03.880 4343 krsh.cMRP0: Background Media Recovery terminated with error 1274ORA-01274: cannot add datafile '/data/u01/oracle/oradata/aaa_obs_data_01.dbf' - file could not be created*** 2021-12-23 16:34:03.880 4343 krsh.cManaged Standby Recovery not using Real Time ApplyMRP: Prodding archiver at standby for thread 1 seq 82
日志分析:
从上述日志分析在23号16:34:03分备库尝试创建13号数据文件,但却抛出ORA-01264,ORA-19800,Linux-x86_64 Error: 13等错误,无法创建13号数据文件,并伴有权限错误提示,后续为控制文件添加默认13号数据文件'UNNAMED00013'。
继续查看AAADBDG_pr00_12137.trc文件,错误与alert大体一致,后续报出13号数据文件,恢复无法将该文件创建为新的OMF文件,又因为备库数据文件无法创建导致主备库数据不一致,备库强制停止MRP0进程。由此初步怀疑是OMF功能导致。
3. 查看主备参数配置
db_file_name_convert和log_file_name_convert的作用:
该参数主要用于复制数据库及dataguard中,
他将主库中的数据文件转换到备库,备库中的文件必须存在及可写,否则recovery进程会失败。
查看主库参数:
SQL> show parameter file_name_convertNAME TYPE VALUE------------------------------------- ---------------------- --------------------log_file_name_convert /data/u01/oracle/oradata','/data/u01/oracle/oradata'db_file_name_convert /data/u01/oracle/oradata','/data/u01/oracle/oradata'
STANDBY_FILE_MANAGEMENT参数作用:
启用自动备用文件管理后,主数据库上的操作系统文件添加和删除将复制到备用数据库上。
查看备库参数:
SQL> show parameter STANDBY_FILE_MANAGEMENTNAME TYPE VALUE---------------- --------------- ------------------------------standby_file_management string  auto
基于alert日志trc文件反馈的OMF信息,进行主备OMF参数查看:
SQL> show parameter db_create_file_destNAME TYPE VALUE------------------------------------ ---------------------- ------------------------------db_create_file_dest string /data
进行分析:
正常情况下主备开启STANDBY_FILE_MANAGEMENT为AUTO的情况下,主库添加数据文件备库接收日志后应用日志根据file_name_convert参数记录的数据文件路径,对应的会在备库创建相应数据文件,由于备库启动OMF功能,则备库创建数据文件时会根据OMF路径进行创建而不再根据file_name_convert参数指定的路径进行创建。
相应文献资料:
查看备库db_create_file_dest参数指定的路径为/data,根据alert以及对应的trc文件相应信息’无法在托管目录进行数据文件创建’并带有Linux-x86_64 Error: 13: Permission denied操作系统权报错,随即查看/data目录权限,发现/data目录属组属主权限均为root权限,如下:

造成故障主要原因

1. 主备库开启OMF功能,在主库创建数据文件时候会根据OMF指定路径进行创建,会自动规避掉file_name_convert参数指定的数据文件路径。
2. OMF路径权限不足,直接导致备库走OMF路径创建数据文件时候失败。

处理方法

由于主库创建大量数据文件,客户急于恢复,随机删除备库,重新进行主备库搭建后,并清空主备库OMF参数。
RMAN> duplicate target database for standby nofilenamecheck from active database;Alter system set db_create_file_dest =’’;


问题总结

搭建DG过程中没有必要的话关闭备库OMF功能,打开OMF情况下一定要保证OMF目录的权限以及相对应数据文件的路径问题。


本 文 原 创 来 源:IT那活儿微信公众号(上海新炬王翦团队)


文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论