ORA-10567: Redo is inconsistent with data block

这两天 在做DG升级,备库应用日志的时候遭遇了以下问题:


Media Recovery Log /export/11g/flash_recovery_area/ORCL2/archivelog/2015_02_08/o1_mf_1_34_bfgq6snb_.arc
Hex dump of (file 3, block 160) in trace file /export/11g/diag/rdbms/orcl2/orcl/trace/orcl_mrp0_26811.trc
Reading datafile '/export/11g/oradata/orcl/undotbs01.dbf' for corruption at rdba: 0x00c000a0 (file 3, block 160)
Reread (file 3, block 160) found different corrupt data (logically corrupt)
Hex dump of (file 3, block 160) in trace file /export/11g/diag/rdbms/orcl2/orcl/trace/orcl_mrp0_26811.trc
Errors in file /export/11g/diag/rdbms/orcl2/orcl/trace/orcl_mrp0_26811.trc  (incident=12227):
ORA-00600: internal error code, arguments: [3020], [3], [160], [12583072], [], [], [], [], [], [], [], []
ORA-10567: Redo is inconsistent with data block (file# 3, block# 160, file offset is 1310720 bytes)
ORA-10564: tablespace UNDOTBS1
ORA-01110: data file 3: '/export/11g/oradata/orcl/undotbs01.dbf'
ORA-10560: block type 'KTU SMU HEADER BLOCK'
Incident details in: /export/11g/diag/rdbms/orcl2/orcl/incident/incdir_12227/orcl_mrp0_26811_i12227.trc
Completed: alter database recover managed standby database using current logfile disconnect
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
MRP0: Background Media Recovery terminated with error 600
Errors in file /export/11g/diag/rdbms/orcl2/orcl/trace/orcl_mrp0_26811.trc:
ORA-00600: internal error code, arguments: [3020], [3], [160], [12583072], [], [], [], [], [], [], [], []
<span style="color:#ff0000;">ORA-10567: Redo is inconsistent with data block (file# 3, block# 160, file offset is 1310720 bytes)</span>
ORA-10564: tablespace UNDOTBS1
ORA-01110: data file 3: '/export/11g/oradata/orcl/undotbs01.dbf'
ORA-10560: block type 'KTU SMU HEADER BLOCK'
Managed Standby Recovery not using Real Time Apply

从错误信息来看,是redo与数据库不一致造成的,网上查找资料,有人通过从主库将相应的数据文件考到备库,然后在应用日志,心里没谱,打算尝试一把

</pre><pre name="code" class="html">
—— 主库:
SQL> alter tablespace UNDOTBS1 begin backup; 

—— 备库
SQL> alter database datafile 2 offline drop;

[oracle@st orcl]$ mv sysaux01.dbf sysaux01.dbf.bak

—— 主库

[oracle@pr orcl]$ scp undotbs01.dbf oracle@192.168.233.129:/export/11g/oradata/orcl/


—— 备库

SQL> alter database datafile 2 online;

Database altered.

SQL> alter database recover managed standby database disconnect from session;


没有报错了。



<think>嗯,用户遇到了ORA-16826错误,提示apply service state与DelayMins属性不一致。我需要先理解这个错误的背景。根据引用[1],这个错误出现在Data Guard Broker的环境中,当应用服务的状态与DelayMins属性设置不匹配时会发生。可能的原因包括配置冲突、日志传输延迟或服务状态同步问题。 首先,DelayMins属性是用来设置应用延迟的,可能用户设置了延迟应用日志,但实际应用服务没有正确应用这个配置。比如,可能应用服务已经停止,但DelayMins仍然被设置,导致状态不一致。另外,网络问题或资源不足可能导致日志传输延迟,超过了DelayMins的限制,从而触发错误。 修复方法方面,可能需要检查并调整DelayMins属性,确保与应用服务的状态一致。比如,如果不需要延迟应用,可以禁用DelayMins;或者如果确实需要延迟,确保应用服务正确配置并运行。此外,检查日志传输是否有延迟,解决潜在的网络或存储问题。重启应用服务或Broker组件也可能有帮助。 用户可能需要具体步骤,比如使用DGMGRL命令查看当前配置,修改属性,验证状态。还需要考虑是否需要重新启动服务或实例。另外,引用[2]中的错误汇总可能提供更多相关错误的背景,但用户主要需要针对ORA-16826的解决方案。 需要注意的是,用户在解决问题时应谨慎操作,避免生产环境中的进一步问题。可能需要备份配置或在进行更改前咨询文档。总结起来,解决方案应围绕检查配置、调整属性、解决延迟问题和验证状态展开。</think>以下是对ORA-16826错误的详细分析及解决方案: ### 问题分析 ORA-16826错误表明Data Guard环境中应用服务状态与`DelayMins`属性配置存在冲突。该属性用于设置日志应用的延迟时间(单位:分钟),但当实际应用延迟与配置值不匹配时触发警告[^1]。 **典型原因:** 1. `DelayMins`设置了非零值,但应用服务未启用延迟应用模式 2. 应用服务实际延迟超过`DelayMins`设置阈值 3. 主备库之间的日志传输存在异常中断 4. Broker配置文件与服务状态不同步 --- ### 解决步骤 #### 1. 查看当前配置状态 通过DGMGRL执行: ```sql SHOW DATABASE '<standby_db_name>' DelayMins SHOW DATABASE '<standby_db_name>' Status ``` 示例输出: ``` DelayMins = 30 Apply Lag: 1 hour 5 minutes ``` 此时实际延迟(65分钟)超过设置值(30分钟),触发ORA-16826 #### 2. 调整配置方案 **方案A:关闭延迟应用** ```sql EDIT DATABASE '<standby_db_name>' SET PROPERTY DelayMins=0; ``` **方案B:强制同步延迟设置** ```sql EDIT DATABASE '<standby_db_name>' SET PROPERTY DelayMins=60; ALTER DATABASE '<standby_db_name>' START APPLY; ``` #### 3. 验证日志传输状态 检查主备库网络连通性: ```sql SELECT DEST_NAME, STATUS, ERROR FROM V$ARCHIVE_DEST WHERE DEST_ID=2; ``` 若存在`ERROR`列值,需排查网络或存储问题 #### 4. 重启应用服务 ```sql ALTER DATABASE '<standby_db_name>' STOP APPLY; ALTER DATABASE '<standby_db_name>' START APPLY; ``` #### 5. 刷新Broker配置 ```sql ENABLE DATABASE '<standby_db_name>'; ``` --- ### 预防措施 1. 定期检查`V$DATAGUARD_STATS`视图中的时间差值 2. 设置`LogShipping`超时参数: ```sql ALTER SYSTEM SET log_archive_dest_2='SERVICE=standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DELAY=60'; ``` 3. 配置自动延迟告警阈值(需Enterprise Manager支持)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

huangliang0703

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

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

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

打赏作者

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

抵扣说明:

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

余额充值