rman-06820是警告而非备份失败,本质是rman在备库执行归档备份时尝试强制主库日志切换却连接失败,暴露adg同步中断或os认证失效;根因为bug 8740124,须改用明文连接(rman target sys/password@stby)并确保密码与主库orapw一致。

RMAN-06820不是备份失败,而是RMAN在多租户环境下尝试归档当前日志时,因连接主库失败触发的警告;它本身不中断备份,但暴露了ADG同步链路或认证配置缺陷。
为什么RMAN-06820在PDB场景下更易出现
该错误本质是RMAN在备库执行BACKUP ARCHIVELOG时,试图强制主库做日志切换(为捕获最新归档),但连接失败。在多租户环境中,问题被放大:
- 备库若以READ ONLY打开且未启用实时应用(ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT),日志GAP会导致主库连接超时
- RMAN默认使用操作系统认证(rman target /)连接备库,但跨容器调用主库时无法传递OS凭据,触发ORA-17629和ORA-00942
- PDB服务名未在备库tnsnames.ora中正确定义,导致RMAN内部解析sys@primary_db失败
必须改用明文连接并显式指定密码文件用户
Oracle 11.2.0.4+版本(含12c)中,RMAN-06820的根因是未发布的Bug 8740124,修复方式不是打补丁,而是绕过OS认证:
- 不要再用rman target /,改用rman target sys/password@stby,其中password必须与主库orapw<sid></sid>文件中sys用户的密码完全一致
- 备库tnsnames.ora中必须定义stby条目,且HOST指向主库监听地址(非localhost),SERVICE_NAME用主库CDB服务名(如orcl)
- 若主库启用了密码文件验证(REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE),需确认备库sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES=(NONE)已禁用OS认证
验证是否真解决:跳过归档备份,直测控制文件快照
RMAN-06820常伴随ORA-00230(控制文件快照锁冲突),所以验证不能只看归档备份是否成功:
- 先在备库执行rman target sys/password@stby,然后运行BACKUP CURRENT CONTROLFILE TO '/tmp/cf_bak.ctl'
- 若仍报ORA-00230,说明有残留RMAN进程占着CF锁,需查V$ENQUEUE_LOCK中TYPE='CF'且ID2=2的会话并kill
- 成功后,再试BACKUP ARCHIVELOG ALL DELETE INPUT——此时RMAN-06820应消失,或仅作为WARNING留在日志末尾,不影响备份集生成
真正危险的是忽略它背后的同步断裂
RMAN-06820反复出现,往往意味着备库日志应用已停滞超过15分钟,而管理员只盯着备份脚本是否“跑完”。这时v$archive_gap可能已积累数个sequence gap,RECOVER MANAGED STANDBY DATABASE命令会卡住。不要等RMAN报错才检查SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP——这个查询本身就要在备库上执行,且结果为空才代表安全。











