对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>根据上面的排查思路:
发现备库的磁盘空间写满,主库的归档日志无法写入到备库。
备库磁盘空间耗尽,无法接收、存储主库传输的归档Redo日志:
ORA-16778 重做传输错误;ORA-16857 备库断开源库告警;ERROR,ADG同步完全中断。# 查看备库归档路径
sqlplus / as sysdba
show parameter log_archive_dest;
show parameter db_recovery_file_dest;RMAN> crosscheck archivelog all;
# 删除7天前已应用归档
RMAN> delete noprompt archivelog until time 'sysdate-7' applied on standby;⚠️ 禁止删除尚未在备库完成恢复的归档,否则会出现日志缺口,需要重建DG。
df -h # 校验归档所在文件系统使用率 <90%-- 主库sqlplus
select sysdate fromdual@ycjj2dg;-- 备库sqlplus
select sysdate fromdual@ycjj;若连通失败,修复tnsnames.ora/listener.ora,重启监听。
DGMGRL> connect sys/主库sys密码@ycjj
DGMGRL> edit database ycjj set property LogXptStatus=reset;
DGMGRL> edit database ycjj2dg set property StatusReport=reset;
DGMGRL> show configuration-- 主库执行
altersystemset log_archive_dest_state_2 = defer;
altersystem switch logfile;
altersystemset log_archive_dest_state_2 =enable;
altersystem switch logfile;DGMGRL> show configuration预期结果:无Error、Warning,Configuration Status: SUCCESS
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,statusfrom v$managed_standby;MRP0进程状态为APPLYING_LOG代表日志恢复正常。
对备库归档目录、闪回区磁盘使用率配置监控阈值:
在备库配置RMAN定时清理脚本,自动删除已应用归档:
crosscheck archivelog all;
delete noprompt archivelog all completed before 'sysdate-5' applied on standby;配合crontab每日定时执行。
主库配置REOPEN参数,链路恢复后自动重试传输:
altersystemset log_archive_dest_2='service=ycjj2dg ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ycjj2dg REOPEN=30';若业务归档增长快,提前扩容备库归档存储,划分独立磁盘存放归档文件,避免和系统盘、数据盘共用空间。