ora-01152是增量恢复后open resetlogs失败的明确信号,源于file 1的scn在控制文件与数据文件间不一致,主因是归档链断裂;需取current_scn与v$datafile_header中min(checkpoint_change#)的较小值执行set until scn再recover,而非强行open resetlogs。

ORA-01152:增量恢复后无法 open resetlogs
这不是备份失败,而是恢复链断裂的明确信号——file 1(SYSTEM)的 SCN 在控制文件和数据文件之间不一致。常见于全备后删了中间归档、再做增量、最后直接 recover 的场景。
关键点在于:RMAN 不会自动帮你“补上”缺失的归档段,它只忠实地按控制文件记录的 SCN 范围去应用日志。
- 先查目标库当前 SCN:
SELECT CURRENT_SCN FROM V$DATABASE; - 再查数据文件头最低 SCN:
SELECT MIN(CHECKPOINT_CHANGE#) FROM V$DATAFILE_HEADER;,取较小值作为恢复起点 - 执行
SET UNTIL SCN <valid_scn></valid_scn>后再RECOVER DATABASE,而不是硬闯OPEN RESETLOGS - 如果已报错,必须先
SHUTDOWN IMMEDIATE,再STARTUP MOUNT,否则RESETLOGS会失败
RMAN-06555:指定数据文件需从旧备份恢复
典型诱因是某表空间(比如 BOSS3)被排除在备份之外,但恢复时又没跳过——RMAN 发现该文件在最新备份中不存在,而控制文件里还记着它的存在状态,就卡在依赖检查上。
别急着重跑全备,先确认是否真需要这个表空间:
- 若业务已弃用,直接用
SKIP FOREVER TABLESPACE BOSS3在RECOVER命令中绕过 - 若必须恢复,得找包含该表空间的最近一次完整备份(可能是更早的
LEVEL 0),不能只靠最近的增量集 -
LIST BACKUP OF TABLESPACE BOSS3可快速验证该表空间是否在任何备份集中存在
ORA-19566:备份中途熔断,不是配置问题而是坏块实锤
ORA-19566 是 Oracle 主动刹车,不是 RMAN 报错。它意味着读到了真实坏块(CORRUPT、FRACTURED 或 LOGICAL),且 MAXCORRUPT=0 触发了中止。
盲目设 SET MAXCORRUPT FOR DATAFILE 4 TO 100 只会让坏块进备份集,恢复时照样崩:
- 第一步永远是查
V$DATABASE_BLOCK_CORRUPTION,确认坏块位置和类型 -
CORRUPT/FRACTURED必须硬件介入(换盘/RAID 重建),之后用RECOVER DATAFILE或BLOCKRECOVER -
LOGICAL类可在线修:对索引用DROP INDEX / CREATE INDEX;对表优先ALTER TABLE MOVE;LOB 段要单独VALIDATE CHECK LOGICAL
增量备份恢复时 missing archived log 报错
RMAN 遇到归档缺失不会尝试“跳过”,而是直接退出。报错类似 RMAN-06059: expected archived log not found,本质是控制文件里找不到对应序列号的归档记录。
手动拷了归档文件也不行——Oracle 不自动扫描目录:
- 把归档文件放到临时路径(如
/tmp/arch_restored/),然后在 RMAN 中执行CATALOG START WITH '/tmp/arch_restored/' - 执行
LIST ARCHIVELOG FROM SEQUENCE 11确认状态为A(Available) - 若提示 “already cataloged”,先
CHANGE ARCHIVELOG 11 UNCATALOG再重试 - 慎用
RECOVER DATABASE NOREDO:它只适用于备库重建场景,主库或未重建控制文件的库上执行会导致ORA-00344











