1.故障
对oracle adg 进行巡检,发现错误:
DGMGRL> show configuration
Configuration - ycjj2dg
Protection Mode: MaxPerformance
Databases:
ycjj - Primary database
Error: ORA-16778: redo transport error for one or more databases
ycjj2dg - Physical standby database
Warning: ORA-16857: standby disconnected from redo source for longer than specified threshold
Fast-Start Failover: DISABLED
Configuration Status:
ERROR
DGMGRL>
2.错误说明
- ORA-16778:主库向备库传输 Redo 日志时发生通信 / 链路 / 配置类故障
- ORA-16857:备库长时间无法接收主库 Redo 流,心跳链路断开超时
3.故障排查
- 查看主库是否运行正常,归档日志是否正常产生
- 查看备件是否运行正常,归档日志是否正常存储(主库发送的归档日志)
根据上面的排查思路:
发现备库的磁盘空间写满,主库的归档日志无法写入到备库。
备库磁盘空间耗尽,无法接收、存储主库传输的归档Redo日志:
- 主库Redo传输进程投递失败 → 上报
ORA-16778重做传输错误; - 备库长期收不到Redo流,心跳超时 → 上报
ORA-16857备库断开源库告警; - DGMGRL整体配置状态变为
ERROR,ADG同步完全中断。
4. 紧急恢复步骤
步骤1:清理备库磁盘,释放存储空间
- 登录备库服务器,定位归档/Flash Recovery Area目录(归档存放路径)
# 查看备库归档路径
sqlplus / as sysdba
show parameter log_archive_dest;
show parameter db_recovery_file_dest;
- 安全清理冗余文件(优先操作)
- 方案A:删除已完成应用、不再需要的过期归档(备库已apply完成的归档可删)
RMAN> crosscheck archivelog all;
# 删除7天前已应用归档
RMAN> delete noprompt archivelog until time 'sysdate-7' applied on standby;
- 方案B:清理过期备份、审计日志、trash临时文件释放空间
⚠️ 禁止删除尚未在备库完成恢复的归档,否则会出现日志缺口,需要重建DG。
- 确认磁盘使用率下降,目录可正常写入文件
df -h # 校验归档所在文件系统使用率 <90%
步骤2:校验主备库监听、tns连通性
- 主库测试访问备库TNS
-- 主库sqlplus
select sysdate from dual@ycjj2dg;
- 备库测试访问主库TNS
-- 备库sqlplus
select sysdate from dual@ycjj;
若连通失败,修复tnsnames.ora/listener.ora,重启监听。
步骤3:重置DG错误状态,恢复Redo传输
方式1:DGMGRL清除数据库错误
DGMGRL> connect sys/主库sys密码@ycjj
DGMGRL> edit database ycjj set property LogXptStatus=reset;
DGMGRL> edit database ycjj2dg set property StatusReport=reset;
DGMGRL> show configuration
方式2:主库手动重启Redo传输进程
-- 主库执行
alter system set log_archive_dest_state_2 = defer;
alter system switch logfile;
alter system set log_archive_dest_state_2 = enable;
alter system switch logfile;
步骤4:验证ADG同步恢复正常
- DGMGRL查看整体状态
DGMGRL> show configuration
预期结果:无Error、Warning,Configuration Status: SUCCESS
- 查看主库Redo传输状态
select dest_id,status,error from v$archive_dest where dest_id=2;
STATUS显示VALID、ERROR字段为空即正常。
- 备库校验归档接收&应用进度
-- 查看备库已接收归档
select sequence#,applied from v$archived_log order by sequence# desc;
-- 查看MRP恢复进程是否运行
select process,status from v$managed_standby;
MRP0进程状态为APPLYING_LOG代表日志恢复正常。
5.长期预防方案
1. 磁盘容量监控告警
对备库归档目录、闪回区磁盘使用率配置监控阈值:
- 使用率≥80%:触发预警通知运维;
- 使用率≥90%:触发紧急告警,及时扩容/清理归档。
2. 归档自动清理策略
在备库配置RMAN定时清理脚本,自动删除已应用归档:
crosscheck archivelog all;
delete noprompt archivelog all completed before 'sysdate-5' applied on standby;
配合crontab每日定时执行。
3. ADG传输断连兜底配置
主库配置REOPEN参数,链路恢复后自动重试传输:
alter system set log_archive_dest_2='service=ycjj2dg ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ycjj2dg REOPEN=30';
4. 扩容规划
若业务归档增长快,提前扩容备库归档存储,划分独立磁盘存放归档文件,避免和系统盘、数据盘共用空间。
6、补充风险提示
- 若清理磁盘时误删未应用归档:备库存在日志缺口,MRP进程无法继续恢复,需要从主库重新传输缺失归档或重建物理备库;
- 若空间释放后DG仍报ORA-16778:检查防火墙、端口、redo传输加密、密码文件一致性;
- MaxPerformance异步模式下,主库不会阻塞业务,但长期断连会导致主库归档堆积,主库磁盘同样有写满风险,需同步监控主库归档磁盘。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




