RMAN-06207 06208

本文讨论了Oracle RMAN在备份文件被手工删除后如何通过RMAN命令和CROSSCHECK命令来检查和恢复问题备份。包括使用RMAN的`deleteobsolete`和`crosscheckbackup`命令,以及在遇到不匹配状态时使用`crosscheckbackuppiece`单独检查特定备份。最终通过`crosscheckbackupset`和`deletebackupset`命令成功删除了问题备份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

备份文件被手工删除,导致了这个小bug的产生。

 

RMAN> delete obsolete;

RMAN retention policy will be applied to the command
RMAN retention policy is set to recovery window of 14 days
Deleting the following obsolete backups and copies:
Type                 Key    Completion Time    Filename/Handle
-------------------- ------ ------------------ --------------------
Backup Set           1611   14-AUG-08         
  Backup Piece       1611   14-AUG-08          /data1/backup/jiangsu/20080814_iljnvkad_1_1
Backup Set           1612   14-AUG-08         
  Backup Piece       1612   14-AUG-08          /data1/backup/jiangsu/20080814_imjnvkad_1_1

RMAN-06207: WARNING: 2 objects could not be deleted for DISK channel(s) due
RMAN-06208:          to mismatched status.  Use CROSSCHECK command to fix status
RMAN-06210: List of Mismatched objects
RMAN-06211: ==========================
RMAN-06212:   Object Type   Filename/Handle
RMAN-06213: --------------- ---------------------------------------------------
RMAN-06214: Backup Piece    /data1/backup/jiangsu/20080814_iljnvkad_1_1
RMAN-06214: Backup Piece    /data1/backup/jiangsu/20080814_imjnvkad_1_1

如果只是产生这个错误并不奇怪,奇怪的是进行CROSSCHECK检查的时候,根本就不检查这个备份:

RMAN> crosscheck backup;

using channel ORA_DISK_1
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data1/backup/jiangsu/20080901_m3jpgk19_1_1 recid=1700 stamp=664293417
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data1/backup/jiangsu/20080901_m2jpgk18_1_1 recid=1701 stamp=664293417
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data1/backup/jiangsu/20080901_c-499478642-20080901-00 recid=1702 stamp=664294238
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data1/backup/jiangsu/20080902_m5jphne8_1_1 recid=1703 stamp=664329673
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data1/backup/jiangsu/20080902_m6jphnei_1_1 recid=1704 stamp=664329683
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data1/backup/jiangsu/20080902_m7jphnei_1_1 recid=1705 stamp=664329683
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data1/backup/jiangsu/20080902_m8jphocp_1_1 recid=1706 stamp=664330649
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data1/backup/jiangsu/20080902_m9jphou5_1_1 recid=1707 stamp=664331206
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data1/backup/jiangsu/20080902_c-499478642-20080902-00 recid=1708 stamp=664331208
Crosschecked 9 objects

这种情况可以通过CROSSCHECK BACKUPPIECE的方式对问题备份进行单独的检查:

RMAN> crosscheck backuppiece '/data1/backup/jiangsu/20080814_iljnvkad_1_1';

using channel ORA_DISK_1
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/data1/backup/jiangsu/20080814_iljnvkad_1_1 recid=1611 stamp=662688077
Crosschecked 1 objects


RMAN> delete obsolete;

RMAN retention policy will be applied to the command
RMAN retention policy is set to recovery window of 14 days
using channel ORA_DISK_1
Deleting the following obsolete backups and copies:
Type                 Key    Completion Time    Filename/Handle
-------------------- ------ ------------------ --------------------
Backup Set           1611   14-AUG-08         
  Backup Piece       1611   14-AUG-08          /data1/backup/jiangsu/20080814_iljnvkad_1_1
Backup Set           1612   14-AUG-08         
  Backup Piece       1612   14-AUG-08          /data1/backup/jiangsu/20080814_imjnvkad_1_1

Do you really want to delete the above objects (enter YES or NO)? yes
deleted backup piece
backup piece handle=/data1/backup/jiangsu/20080814_iljnvkad_1_1 recid=1611 stamp=662688077
Deleted 1 objects

RMAN-06207: WARNING: 1 objects could not be deleted for DISK channel(s) due
RMAN-06208:          to mismatched status.  Use CROSSCHECK command to fix status
RMAN-06210: List of Mismatched objects
RMAN-06211: ==========================
RMAN-06212:   Object Type   Filename/Handle
RMAN-06213: --------------- ---------------------------------------------------
RMAN-06214: Backup Piece    /data1/backup/jiangsu/20080814_imjnvkad_1_1


进行检查之后的备份就可以顺利的删除了.

RMAN> crosscheck backupset 1612;

using channel ORA_DISK_1
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/data1/backup/jiangsu/20080814_imjnvkad_1_1 recid=1612 stamp=662688078
Crosschecked 1 objects


RMAN> delete backupset 1612;

using channel ORA_DISK_1

List of Backup Pieces
BP Key  BS Key  Pc# Cp# Status      Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
1612    1612    1   1   EXPIRED     DISK        /data1/backup/jiangsu/20080814_imjnvkad_1_1

Do you really want to delete the above objects (enter YES or NO)? yes
deleted backup piece
backup piece handle=/data1/backup/jiangsu/20080814_imjnvkad_1_1 recid=1612 stamp=662688078
Deleted 1 objects

使用CROSSCHECK BACKUPSET的方式也可以,但是比较单独指定被删除的备份,而通过CROSSCHECK BACKUP是无法找到的.其他手工删除的备份,则没有这个问题.

在Oracle数据库中使用RMAN(Recovery Manager)进行备份时,如果出现错误 `RMAN-03002`、`RMAN-06059` 和 `ORA-19625`,这些错误通常与归档日志文件丢失或路径不一致有关。以下是针对这些问题的解决方案: ### 错误分析与解决方法 1. **RMAN-03002: failure of backup command** - 该错误表示RMAN的备份命令执行失败。它通常作为其他错误(如`RMAN-06059`)的包装错误,指示具体的失败原因。 - 这个错误本身不会提供详细的失败原因,因此需要查看堆栈中的其他错误信息以确定根本原因。 2. **RMAN-06059: expected archived log not found, loss of archived log compromises recoverability** - 该错误表明RMAN期望找到某个归档日志文件,但未找到。这通常是因为归档日志文件已被手动删除或路径不一致导致的。 - 这会直接影响数据库的可恢复性,因为RMAN无法找到必要的归档日志文件来完成备份或恢复操作。 3. **ORA-19625: error identifying file** - 该错误进一步说明了文件路径问题,例如归档日志文件不存在或路径错误。 - 在Linux系统上,错误 `ORA-27037: unable to obtain file status` 和 `Linux-x86_64 Error: 2: No such file or directory` 表明RMAN无法访问指定的归档日志文件路径。 ### 解决方案 1. **验证归档日志文件路径** - 检查归档日志文件的实际存储路径是否与RMAN目录中记录的路径一致。 - 如果归档日志文件已被手动删除,可以使用以下命令从RMAN目录中清除无效的归档日志信息: ```sql RMAN> crosscheck archivelog all; RMAN> delete expired archivelog all; ``` 这些命令会标记无效的归档日志条目,并从RMAN目录中删除它们[^2]。 2. **更新归档日志路径** - 如果归档日志文件被移动到新的路径,需要更新RMAN目录中的路径信息。可以使用以下命令注册新的归档日志文件: ```sql RMAN> catalog start with '/new/archivelog/path/'; ``` 这将重新注册指定路径下的所有归档日志文件。 3. **避免手动删除归档日志文件** - 手动删除归档日志文件可能导致RMAN目录与实际文件状态不一致。建议通过RMAN命令删除归档日志文件,以确保目录信息同步: ```sql RMAN> delete archivelog until time 'sysdate-7'; ``` 这将删除7天前的归档日志文件,并更新RMAN目录。 4. **检查归档日志路径权限** - 确保Oracle数据库实例具有对归档日志文件路径的读写权限。权限不足可能导致RMAN无法访问或写入归档日志文件。 5. **配置归档日志删除策略** - 为了避免归档日志文件占用过多磁盘空间,可以配置RMAN的归档日志删除策略: ```sql RMAN> configure archivelog deletion policy to applied on standby; ``` 这将确保归档日志文件在备用数据库上应用后自动删除。 ### 示例:清理无效归档日志条目 ```sql RMAN> run { crosscheck archivelog all; delete expired archivelog all; } ``` 此脚本会检查所有归档日志文件的状态,并删除RMAN目录中无效的条目。 ### 示例:重新注册归档日志文件 ```sql RMAN> catalog start with '/new/archivelog/path/'; ``` 此命令会重新注册指定路径下的所有归档日志文件。 ### 示例:配置归档日志删除策略 ```sql RMAN> configure archivelog deletion policy to applied on standby; ``` 此命令配置归档日志删除策略,确保归档日志文件在备用数据库上应用后自动删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值