ORA-00258错误表明数据库处于NOARCHIVELOG模式时尝试手动归档但未指定日志,必须切换至ARCHIVELOG模式并显式设置归档路径,否则backup database plus archivelog将因归档日志不可用而直接失败。

数据库必须先开归档,否则 backup database plus archivelog 会报错
RMAN 全库备份依赖归档日志连续性,backup database plus archivelog 在非归档模式下直接失败,报错类似 ORA-00258: manual archiving in NOARCHIVELOG mode not allowed。这不是配置问题,是硬性前提。
确认方式很简单:
- 用
sqlplus / as sysdba连接后执行SELECT log_mode FROM v$database;,返回必须是ARCHIVELOG - 若为
NOARCHIVELOG,需停库执行:SHUTDOWN IMMEDIATE→STARTUP MOUNT→ALTER DATABASE ARCHIVELOG→ALTER DATABASE OPEN - 归档路径建议显式设置:
ALTER SYSTEM SET log_archive_dest_1='LOCATION=/u01/archivelog' SCOPE=BOTH;,避免写到 $ORACLE_HOME/dbs 这类默认位置导致空间不足
backup database 命令不加 format 参数,备份文件会丢在哪儿?
很多人执行 backup database; 后找不到文件,是因为 RMAN 默认把备份片(backup piece)写进快速恢复区(FRA),路径由 DB_RECOVERY_FILE_DEST 参数决定,不是当前目录也不是 $ORACLE_HOME。
查 FRA 实际路径:
-
SHOW PARAMETER db_recovery_file_dest;(SQL*Plus) - 或
LIST BACKUP(RMAN 内)看输出里的BS Key对应的Piece Name,路径通常形如/u01/fast_recovery_area/DBNAME/backupset/YYYY_MM_DD/xxx.bkp - 如果 FRA 没配或已满,
backup会直接报错ORA-19809: limit exceeded for recovery files
所以生产环境务必提前配好 FRA 或显式指定 FORMAT:
BACKUP DATABASE FORMAT '/u01/backup/rman/%U.bkp';
全备时要不要 include current controlfile?
要,但不是必须手写 —— 更稳妥的方式是打开自动控制文件备份:CONFIGURE CONTROLFILE AUTOBACKUP ON;。它会在每次 BACKUP、COPY 或 ALTER DATABASE 操作后,自动生成一份独立的控制文件备份,存放在 CONFIGURE CONTROLFILE AUTOBACKUP FORMAT 指定路径(默认是 FRA 下的 autobackup 子目录)。
手动加 INCLUDE CURRENT CONTROLFILE 的问题在于:它只把控制文件打包进当前备份集,一旦该备份集损坏,控制文件就没了;而 auto backup 是单独文件,更易定位和恢复。
验证是否生效:
-
SHOW CONTROLFILE AUTOBACKUP;返回ON -
LIST BACKUP OF CONTROLFILE;能看到最近生成的条目
备份脚本里漏掉 set echo on 和 NLS_DATE_FORMAT,排查会很痛苦
RMAN 脚本跑失败时,如果没有这两项,日志里只有“RMAN-03002: failure of backup command”,完全看不到哪一行出错、什么时间失败、具体参数值是什么。
必须在脚本开头加上:
export NLS_DATE_FORMAT='dd-mon-yyyy hh24:mi:ss'<br>rman target / <<EOF<br>set echo on;<br>backup database plus archivelog delete input;<br>EOF
注意:set echo on 必须在 RMAN 会话内执行,不能只写在 shell 脚本里;NLS_DATE_FORMAT 是 shell 环境变量,影响 RMAN 输出的时间戳精度。
容易忽略的一点:如果 NLS_DATE_FORMAT 设置成非法格式(比如含中文或空格),RMAN 可能连连接都失败,报 ORA-12705 类错误 —— 此时先清空该变量再试:unset NLS_DATE_FORMAT。


















