必须开启archivelog模式才能执行rman增量备份等关键操作;需先确认当前模式,再通过mount状态切换并重启;必须配置独立归档路径并禁用快速恢复区归档,否则易触发ora-00257错误;最后须手动切日志并验证文件是否真实生成。

ARCHIVELOG 模式必须开启才能做 RMAN 增量备份、Data Guard 同步、闪回数据库等关键操作;不配置独立归档路径,ORA-00257 错误几乎必然出现,尤其在生产环境。
确认当前日志模式是否为 NOARCHIVELOG
别跳过这步——很多 DBA 直接开干,结果发现库本来就是 ARCHIVELOG,白重启一次。
- 用
sysdba连入:sqlplus / as sysdba - 执行:
SELECT LOG_MODE FROM V$DATABASE;,返回NOARCHIVELOG才需切换 - 或更直观:
ARCHIVE LOG LIST;,看输出中Database log mode行
切换到 ARCHIVELOG 模式需重启
Oracle 19c 不支持在线切换归档模式,ALTER DATABASE ARCHIVELOG 必须在 MOUNT 状态下执行,且之后要重启实例生效。
SHUTDOWN IMMEDIATE;STARTUP MOUNT;ALTER DATABASE ARCHIVELOG;ALTER DATABASE OPEN;- 再跑一遍
ARCHIVE LOG LIST,确认显示Archive Mode和Automatic archival Enabled
必须改掉默认归档路径,否则 ORA-00257 很快报
默认归档写入快速恢复区(DB_RECOVERY_FILE_DEST),而该区域默认仅 2GB 或 4GB。归档日志一多,空间满即触发 ORA-00257: archiver error. Connect internal only, until freed.,数据库无法写日志,直接挂起。
- 先创建独立目录(建议用单独磁盘):
mkdir -p /u01/app/oracle/archivelog - 授权给
oracle用户:chown -R oracle:oinstall /u01/app/oracle/archivelog - 禁用快速恢复区归档(关键!):
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='' SCOPE=SPFILE; - 指定新路径:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/archivelog' SCOPE=SPFILE; - 启用该目标:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=ENABLE SCOPE=SPFILE; - 重启数据库才生效(
SHUTDOWN IMMEDIATE; STARTUP;)
验证归档是否真写到新路径
光看参数没用,得看到文件落地才算数。
- 手动切一次日志:
ALTER SYSTEM SWITCH LOGFILE; - 查归档记录:
SELECT NAME, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY FIRST_TIME DESC FETCH FIRST 3 ROWS ONLY; - 登录操作系统,确认路径下有生成的
.arc文件:ls -lt /u01/app/oracle/archivelog/ - 注意:刚切完可能有延迟,等几秒再查;若无文件,检查目录权限、
LOG_ARCHIVE_DEST_STATE_1是否为ENABLE、监听是否异常
ARCHIVE LOG LIST 显示正常,但 V$ARCHIVED_LOG 为空、磁盘上没文件——这种“静默失败”最耗排查时间。务必手动切日志 + 查 OS 文件双验证。











