00261, 00000, “log %s of thread %s is being archived or modified”

本文探讨了在Oracle Data Guard环境中遇到ORA-00261错误的原因及解决办法。当进行故障转移(failover)操作时,若备用数据库的RFS进程未能及时释放redo日志文件,便会导致此错误。文章提供了两种解决方案:等待网络超时或重启备用数据库。
摘要由CSDN通过智能技术生成

在database guard上,做failover的时候,有时候会遭遇到ORA-00261的错误。

查一下error

[oracle@solaris ~]oerr ORA 00261
00261, 00000, “log %s of thread %s is being archived or modified”
// *Cause: The log is either being archived by another process or an
// administrative command is modifying the log. Operations that
// modify the log include clearing, adding a member, dropping a
// member, renaming a member, and dropping the log.
// *Action: Wait for the current operation to complete and try again.


可以看到是当前的log还是使用,从而导致失败。

在failover发生上面错误,主要是因为standby端的RFS进程没有意识到primary已经不可访问,所以RFS没有释放当前对 standby log的使用,从而导致上面的问题。一般这样的故障时由于网络故障导致,standby无法获得多primary实例的状态,如果primary端的数据 库实例由于故障中断,那么一般情况下standby端的RFS进程会立刻意识到primary已经不可访问,也就会立刻释放当前的standby redo log文件。

只要rfs没有释放standby redo log文件,那么执行alter database recover managed standby database finish就会出现上面的错误。
在日志里可以发现如下的错误片段。
Warning: log 4 of thread 1 is being archived or modified
Recovery interrupted.
Media Recovery failed with error 261

这时如果进行switch的话,出现
ORA-16139: media recovery required

所以必须检查alertlog文件,直到发现如下信息才表示RFS进程已经释放了standby redo log文件,这时候才可以作FINISH:
RFS: Possible network disconnect with primary database

这时候我们可以手动的促使rfs释放standby redo log
1. 等待RFS进程的network timeout,通常需要等待8分钟左右
2.关闭standby数据库,再重新开启,强制RFS进程释放standby redo log

v$managed_standby视图可以观察到dg里的进程状态

finish成功之后再执行switch:
alter database commit to switchover to primary;

switch成功之后,重新启动数据库:
shutdown immeaite
startup


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inthirties

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值