crosscheck archivelog all;crosscheck backup of区别

crosscheck archivelog all; 验证的是DB的归档日志即log_archive_dest参数指定位置的文件,当手工删除了归档日志以后,Rman备份会检测到日志缺失,从而无法进一步继续执行。
所以此时需要手工执行crosscheck过程,之后Rman备份可以恢复正常

RMAN> crosscheck archivelog all;

释放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=18 devtype=DISK
对归档日志的验证失败
存档日志文件名 =D:ORACLEORA92DATABASEARCHIVEARC00026.001 记录 ID=28 时间戳
=607690515
对归档日志的验证失败
存档日志文件名 =D:ORACLEORA92DATABASEARCHIVEARC00027.001 记录 ID=29 时间戳
=607690586
已交叉检验的 2 对象

crosscheck backup of archivelog all;验证的是用rman 备份归档日志的备份文件,执行完这个命令后可用delete expired archivelog;删除状态为expired的备份文件

RMAN> crosscheck backup of archivelog all;

使用通道 ORA_DISK_1
交叉校验备份段: 找到为 'EXPIRED'
备份段 handle=D:ORACLEBACKUPARC39_TESTDB_39_1 recid=38 stamp=607690347
交叉校验备份段: 找到为 'EXPIRED'
备份段 handle=D:ORACLEBACKUPARC%E_TESTDB_41_1 recid=40 stamp=607690481
交叉校验备份段: 找到为 'EXPIRED'
备份段 handle=D:ORACLEBACKUPARC_%E_TESTDB_43_1 recid=42 stamp=607690517
交叉校验备份段: 找到为 'AVAILABLE'
备份段 handle=D:ORACLEBACKUPARC_%E_TESTDB_45_1 recid=44 stamp=607690588
交叉校验备份段: 找到为 'AVAILABLE'
备份段 handle=D:ORACLEBACKUPARC_%E_TESTDB_46_1 recid=45 stamp=607690590
交叉校验备份段: 找到为 'AVAILABLE'
备份段 handle=D:ORACLEBACKUPARC_%E_TESTDB_47_1 recid=46 stamp=607690592
已交叉检验的 6 对象

### 解决方案分析 #### 错误解析 RMAN-03009 表示 RMAN 备份命令执行失败,通常伴随其他 Oracle 错误代码一起出现。在这种情况下,涉及的错误有 ORA-19566 和 ORA-27040 或者 ORA-27041。 - **ORA-19566**: 超过了指定文件中的损坏块数量限制[^1]。 - **ORA-27040/ORA-27041**: 文件或目录不可访问、不存在或者权限不足[^2]。 这些错误可能由以下几个原因引起: 1. 数据文件路径配置不正确或目标路径缺失。 2. 权限设置不当,导致无法读取或写入到指定位置。 3. 存储设备故障或磁盘空间不足。 4. 数据文件本身存在物理损坏或逻辑损坏。 --- #### 配置检查与修复方法 ##### 1. 检查并确认备份路径是否存在 如果 `$ORACLE_HOME/Oracle/backup/rman` 路径不存在,则需要手动创建此路径,并赋予适当的权限给 Oracle 用户。 ```bash mkdir -p $ORACLE_HOME/Oracle/backup/rman chown -R oracle:oinstall $ORACLE_HOME/Oracle/backup/rman chmod -R 755 $ORACLE_HOME/Oracle/backup/rman ``` 通过上述操作可以确保 RMAN 的默认备份路径可用。 --- ##### 2. 修改 RMAN 默认存储路径 可以通过修改 `CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT` 命令来更改 RMAN 的默认存储路径。例如,将其更改为 `/u01/app/oracle/backup/rman`: ```sql RUN { CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/app/oracle/backup/rman/%U'; } ``` 这样可以避免因路径问题引发的错误。 --- ##### 3. 检查数据文件状态 运行以下 SQL 查询以验证数据文件的状态及其对应的路径是否正常: ```sql SELECT name FROM v$datafile; SELECT file#, name, checkpoint_change# FROM v$datafile_header; ``` 如果发现某些数据文件路径异常(如 ASM 到单机切换后的路径差异),则需调整路径映射关系。可尝试使用以下命令更新路径: ```sql ALTER DATABASE RENAME FILE '旧路径' TO '新路径'; ``` 对于 ADG 场景下的路径冲突,可通过 `SWITCH DATAFILE TO COPY` 命令重新定位副本文件[^4]。 --- ##### 4. 手动处理损坏块 当遇到 ORA-19566 提示超过允许的损坏块数时,应先识别具体的损坏块信息。以下是诊断和恢复的方法: - 使用 `DBVERIFY` 工具检测数据文件完整性: ```bash dbv file=/path/to/datafile.dbf blocksize=8192 ``` - 如果确实存在坏块,考虑启用跳过坏块选项进行备份: ```sql BACKUP AS BACKUPSET DATABASE SKIP INACCESSIBLE; ``` 这会忽略已知的坏块继续完成备份过程。 --- ##### 5. 清理陈旧备份记录 有时 SBT 或磁盘通道上的元数据残留也可能触发类似的错误码组合。建议定期清理无效条目: ```sql CROSSCHECK BACKUP OF DATABASE; DELETE EXPIRED BACKUP; ``` 以上命令有助于移除不再存在的备份集标记,从而减少潜在干扰因素[^3]。 --- ### 总结 综合来看,针对当前场景下发生的 RMAN-03009 及其关联错误,主要从环境准备 (包括但不限于校验路径合法性以及分配足够的资源配额),再到深入剖析底层对象健康状况两方面入手加以应对即可有效化解此类难题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值