ORA-16038本质是归档路径写入失败而非日志损坏,主库归档卡死会阻塞LGWR、DML及DG同步;应优先检查V$ARCHIVE_DEST状态、归档路径可达性、ASM磁盘组USABLE_FILE_MB及FRA空间,避免盲目CLEAR UNARCHIVED。主库归档慢直接拖垮事务响应,根本原因常是
LOG_ARCHIVE_DEST_2 配置为 SYNC 模式且网络或备库响应延迟,导致 LGWR 死等。必须切到 ASYNC,但不能只改参数就完事——得确认传输链路、避免日志堆积反噬主库。
为什么 SYNC 归档会让主库卡顿
lgwr 进程在 sync 模式下必须等 lns 把日志发到备库并收到 ack 才能返回,一旦网络抖动、备库 rfs 写入慢、或 net_timeout 设置过短,lgwr 就挂起,后续所有 dml/ddl 全部排队等待,表现为会话大量阻塞在 log file sync 或 lgwr wait for redo copy 事件上。
-
SYNC不适合跨机房、高延迟、或备库 IO 能力弱的环境 - 即使配置了
NET_TIMEOUT=30,超时后 LGWR 仍报错(如 ORA-16057),事务回滚,业务感知明显 - 主库
v$archive_dest_status中STATUS可能为ERROR,ERROR列显示类似ORA-16191: Primary log shipping client not logged on to standby
切到 ASYNC 的实操要点和避坑项
切换本身只需一条命令,但生效前必须验证前置条件是否满足,否则可能造成归档中断而非提速。
- 确认主库已启用
FORCE LOGGING:否则部分 DML 可能不写 redo,备库数据不一致 - 检查
LOG_ARCHIVE_DEST_2是否含SERVICE=xxx且 TNS 名可解析:tnsping standby_db必须通,否则ASYNC也传不出去 - 禁用
NET_TIMEOUT:该参数仅对SYNC有效,ASYNC下设了也无效,还可能干扰参数解析 - 正确语法示例:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=standby_db LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby_db' SCOPE=BOTH; - 执行后立即 reload:
ALTER SYSTEM ARCHIVE LOG CURRENT;观察v$archive_dest_status的STATUS是否变为VALID,ERROR列为空
切完 ASYNC 后还要盯住备库是否真跟得上
ASYNC 解放了主库 LGWR,但没解决备库应用慢的问题。如果备库 MRP0 本身处理不过来,归档照样堆积,最终填满备库磁盘,触发 ORA-19809,甚至反向影响主库归档目录空间(若共用 NFS)。
- 查
v$dataguard_stats:若apply lag持续增长而transport lag很小,说明日志已到备库但应用不动,需调PARALLEL或查索引维护/大事务 - 备库开启实时应用(Real-Time Apply):有 Standby Redo Log 的前提下,执行
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;,比归档后应用快得多 - 监控
v$managed_standby:确保MRP0状态是APPLYING_LOG,不是WAIT_FOR_GAP或长期WAIT_FOR_LOG - 别忽略
_log_parallelism_max:这是隐含参数,控制 MRP 并行度上限,默认 2,CPU 多时可设为 4~6(需重启 DB)
主库归档目录空间告急时的连带动作
归档慢往往伴随归档目录写满,尤其当主库同时承担备份源、审计日志输出等角色时。切 ASYNC 后归档速度回升,旧归档若不清,新归档一涌而出立刻再次占满。
- 先别直接
rm:确认这些归档是否已被备库接收(查v$archived_log的DEST_ID=2和ARCHIVED='YES') - 用 RMAN 清理安全边界:例如
DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-2';,避免误删尚未传输的归档 - 检查
log_archive_dest_1是否指向本地文件系统:若为 ASM,注意RECOVERY_FILE_DEST_SIZE是否设得太小 - 临时扩空间只是缓兵之计;长期应拆分归档路径,或把
log_archive_dest_1改为快速恢复区(FRA),由 Oracle 自动管理生命周期


















