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

Oracle ADG--ORA-01274报错问题解决思路

IT那活儿 2023-06-16
1576

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!




背景介绍



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



问题复现



1. 主库创建一个ts1表空间

create tablespace ts1 datafile '/oradata/orcl/ts01.dbf' size 10M;
select FILE#, NAME, STATUS from v$datafile;

2. 从库查看alert日志
发现报ORA-01274错误:
3. 从库查看数据文件信息
发现文件名异常:
select FILE#, NAME, STATUS from v$datafile;
4. 检查复制进程,发现MRP0不在了
检查STANDBY_FILE_MANAGEMENT和db_file_name_convert参数,发现路径有转换,但不是自动的。
select process, sequence#, status, delay_mins from v$managed_standby;
show parameter standby_file_management
show parameter name_convert




问题解决



从库执行alter database create datafile ...恢复数据文件,并修改standby_file_management为auto,防止后面再添加数据文件出现同样问题,最后恢复同步。
alter database create datafile 
'/oracle/app/oracle/product/11.2.0/db_1/dbs/UNNAMED00006' 
as '/oradata/dgorcl/ts01.dbf';
alter system set standby_file_management=auto;
alter database recover managed standby database using 
current logfile disconnect from session;

从库检查复制进程及数据文件:
select process, sequence#, status, delay_mins from v$managed_standby;
select FILE#, NAME, STATUS from v$datafile;

此时数据文件及主备已恢复正常,虽然数据文件状态为RECOVER,但是可以忽略,或是通过日志切换恢复。
alter system switch logfile;
alter system switch logfile;

从库再次查看数据文件状态,发现已恢复正常。
select FILE#, NAME, STATUS from v$datafile;

我们还可以再次验证该问题是否解决:
1)再次创建表空间ts2
create tablespace ts2 datafile '/oradata/orcl/ts02.dbf' size 10M;
2)从库查看数据文件信息及复制进程信息
select FILE#, NAME, STATUS from v$datafile;
select process, sequence#, status, delay_mins from v$managed_standby;
3)发现复制无异常,只是数据文件状态为recover,切换下日志即可恢复online
alter system switch logfile;
alter system switch logfile;

select FILE#, NAME, STATUS from v$datafile;

总 结:

我们在搭建完ADG后不光要检查数据是否同步,还有检查参数是否正确,这里就是因为从库STANDBY_FILE_MANAGEMENT设置成MANUAL,然后在主库添加了数据文件,也不检查从库是否成功添加,导致主从中断的意外。

END


本文作者:朱谊顺(上海新炬中北团队)

本文来源:“IT那活儿”公众号

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

评论