DB_RECOVERY_FILE_DEST必须设置为本地路径或ASM磁盘组并重启生效,否则FLASHBACK DATABASE将因缺少闪回日志而失败报ORA-38729;同时需开启归档模式、清空LOG_ARCHIVE_DEST_1并设为USE_DB_RECOVERY_FILE_DEST以确保归档日志
开门见山,先说一个核心前提:DB_RECOVERY_FILE_DEST这个参数,你必须设,而且必须指向数据库服务器本地的文件系统或ASM磁盘组。这可不是一个“锦上添花”的可选项,而是一条硬性规定。如果配置不当,后续执行FLASHBACK DATABASE时,系统会直接抛出ORA-38729: not enough flashback database log data to do flashback错误,告诉你闪回日志数据不足。原因很简单,闪回日志根本没地方写,自然也就无数据可回退。
闪回数据库功能的底层逻辑,是依赖归档日志和闪回日志协同工作的。没有归档,闪回就成了无源之水。所以,开启归档模式是另一个不可动摇的先决条件。
长期稳定更新的攒劲资源: >>>点此立即查看<<<

ARCHIVE LOG LIST命令检查。关键要看输出里是否包含Database log mode: Archive Mode这一行。No Archive Mode,那就需要按流程开启:先SHUTDOWN IMMEDIATE关闭数据库,再STARTUP MOUNT启动到挂载状态,接着执行ALTER DATABASE ARCHIVELOG,最后ALTER DATABASE OPEN打开数据库。LOG_ARCHIVE_START=TRUE这类参数来“假装”开启。这个参数在Oracle 10g之后就已经废弃了,必须实实在在地切换到归档模式。DB_RECOVERY_FILE_DEST 和大小这个参数定义的路径,就是大名鼎鼎的闪回恢复区(FRA)。归档日志、RMAN备份、闪回日志默认都会往这里写。关键在于,这个路径不能是NFS或任何远程挂载点,必须是服务器本地的存储。
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 20G SCOPE=BOTH。ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/u01/app/oracle/fast_recovery_area' SCOPE=BOTH。SHUTDOWN IMMEDIATE → STARTUP)才能生效。别被SCOPE=BOTH迷惑,它并不代表能热生效。SHOW PARAMETER db_recovery_file_dest查看,确保值非空,并且要手动检查一下该路径的属主、权限和磁盘空间是否都正常。接下来这一步至关重要,却容易被忽略。如果LOG_ARCHIVE_DEST_1这个参数指向了FRA之外的路径,就会和FRA的自动管理机制产生冲突。后果是,RMAN备份可能找不到归档日志,还原时报RMAN-06023;更严重的是,它会“劫持”归档流向,导致闪回日志生成异常。
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='' SCOPE=BOTH。ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST' SCOPE=BOTH。这句命令的意思是,明确告诉数据库归档日志就放在FRA里。SHOW PARAMETER log_archive_format,确认格式中包含%r(resetlogs ID),这是为了防止数据库经历resetlogs操作后产生日志序列号冲突。标准格式应类似%t_%s_%r.dbf。ALTER SYSTEM ARCHIVE CURRENT LOG手动切换一次日志,然后查询SELECT NAME FROM V$ARCHIVED_LOG WHERE ROWNUM = 1,看看新生成的归档日志文件是否确实位于DB_RECOVERY_FILE_DEST目录下。FLASHBACK DATABASE 并验证只有当前面三个步骤都稳妥完成,才能进行最后一步——开启闪回功能。否则,即使ALTER DATABASE FLASHBACK ON命令执行成功,后续的闪回操作也注定会失败。
SHUTDOWN IMMEDIATE → STARTUP MOUNT。闪回功能的开启和关闭必须在MOUNT状态下进行。ALTER DATABASE FLASHBACK ON。ALTER DATABASE OPEN。SELECT FLASHBACK_ON FROM V$DATABASE,返回值必须是YES。_flashback_max_log_size和_flashback_log_min_size这类隐式参数,除非有明确的官方指导,否则不建议手动调整。另外,当FRA空间不足时,Oracle会自动清理旧的闪回日志,这个清理行为独立于RMAN的备份保留策略。最后,再强调一个运维中的核心要点:FRA空间是否够用,不能只看初始配置的大小,而要看“归档生成速率”、“闪回保留窗口”和“RMAN备份频率”三者叠加后的实际消耗。很多生产故障都源于一种错觉:“我配了20G,肯定够了”。结果可能遇到业务高峰,一天归档就涨了15G,迅速挤占了闪回日志的空间。因此,持续监控V$RECOVERY_FILE_DEST视图中的SPACE_USED/SPACE_LIMIT比值,其重要性远超过任何静态配置。防患于未然,永远是DBA工作的第一要义。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述