今天又在RMAN备份脚本中发现了错误信息。
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of crosscheck command at 08/15/2006 09:18:29
ORA-01455: converting column overflows integer datatype
以为还是上次碰到的错误:http://yangtingkun.itpub.net/post/468/192304
但是按照上次的诊断条件查询,没有发现异常。
现象和上次碰到的十分接近,都是在执行CROSSCHECK、DELETE和LIST等命令的时候出现的错误。
但是根据上次的经验,登陆到catalog库上,执行查询:
SQL> select piece#, bp_key, start_time, completion_time from rc_backup_piece
2 where start_time > completion_time;
no rows selected
没有检查到任何导致错误的数据。
于是继续查询metalink,排除了rman_seq.nextval过大,以及catalog视图中字段长度不够的问题,在metalink上没有找到其他有价值的东西了。
只好暂时把怀疑的目光重新放到上面的那个错误上。首先怀疑的是那些start_time和completion_time相等的记录。但是发现这样的记录存在很多,而问题似乎是从今天才开始出现的,看来应该不是这个问题。那么会不会是Oracle只显示到了秒而内部精确到了毫秒呢?感觉似乎也不像,目前查询的已经是catalog的视图了,Oracle的rman工具也是从这个视图中读取数据,显然这也不是问题的原因。
那么还有什么可能呢?rc_backup_piece中没有冲突的数据,会不会rc_backup_set中有呢?感觉虽然不大可能,但还是执行了一下:
SQL> select bs_key, recid, start_time, completion_time from rc_backup_set
2 where start_time > completion_time;
BS_KEY RECID START_TIME COMPLETION_TIME
---------- ---------- ------------------- -------------------
2074 264 2006-09-28 09:20:56 2006-09-28 09:20:55
居然真的存在,而且从时间上看,这个backup set产生的时间,就是今天早上,看来这个就是问题产生的原因了。看看对应rc_backup_piece中的记录:
SQL> select piece#, bp_key, start_time, completion_time from rc_backup_piece
2 where bs_key = 2074;
PIECE# BP_KEY START_TIME COMPLETION_TIME
---------- ---------- ------------------- -------------------
1 2117 2006-09-28 09:20:55 2006-09-28 09:20:55
www.ixdba.net
真是奇怪,RC_BACKUP_SET里面错误的数据,在RC_BACKUP_PIECE中居然没有问题,而且二者的START_TIME居然是不一致的。
不过既然是bug,肯定是比较奇怪的问题了,看来对于bug来说,真是没有什么不可能的了。
问题找到了,解决方法和上次的基本一致:使用rman连接catalog,然后直接删除有问题的backup_piece。
SQL> select handle from rc_backup_piece where bs_key = 2074;
HANDLE
----------------------------------------------------------------
/data1/backup/testdata/88hudivo_1_1
RMAN> delete force noprompt backuppiece '/data1/backup/testdata/88hudivo_1_1';
using channel ORA_DISK_1
List of Backup Pieces
BP Key BS Key Pc# Cp# Status Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
2117 2074 1 1 AVAILABLE DISK /data1/backup/testdata/88hudivo_1_1
deleted backup piece
backup piece handle=/data1/backup/testdata/88hudivo_1_1 recid=264 stamp=602328055
Deleted 1 objects
直接删除BACKUPSET会出现下面的错误:
RMAN> delete backupset 2074;
allocated channel: ORA_DISK_1