ORA-27041 when RMAN backup

今天给客户做文件系统数据文件转移到裸设备上的操作,用RMAN来完成,本来很简单的事情,但是却意外地碰到了下面的错误。

RMAN> backup database;

Starting backup at 30-NOV-07
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=23 devtype=DISK
RMAN-00571: =============================
RMAN-00569: = ERROR MESSAGE STACK FOLLOWS =
RMAN-00571: =============================
RMAN-03002: failure of backup command at 11/30/2007 12:30:48
ORA-00600: internal error code, arguments: [525], [0x700000118D65E98], [5], [library cache], [17], [0x700000000025618], [device information], []
ORA-27041: unable to open file
IBM AIX RISC System/6000 Error: 25: Not a typewriter
Additional information: 16

在alertlog中也有相同的ORA-600报错,检查了RMAN要备份的数据文件权限,检查了RMAN备份目的地的目录权限,检查了数据库启动之后RMAN备份之前的alertlog,没有发现任何异常,怪哉。

Metalink上相关的文章有:Note:262997.1Bug No. 2181764

只是简单地描述这是一个只有在AIX平台上才会碰到的问题,是因为RMAN在备份过程中查询X$KRBAFF表(KRB is Kernel Backup/Restore, AFF is disk and node AFFinity)引起的,解决方法是使用diskratio=0来进行备份,也就是backup命令要改为:
backup format ‘path’ database diskratio=0;

diskratio参数很少用到,它指定的是RMAN从多少块磁盘上读取数据文件,默认值跟FILESPERSET参数相同,如果不指定FILESPERSET参数那么该参数值是4,但是RMAN仍然会考虑真正参与备份的磁盘数,如果小于4那么就选择较小的那个数。

更进一步地在内部站点上查一下资料可以看到跟源码中的skgfdlndv()函数有关。

只有raw devices才有affinity info,而这次的备份牵涉到的文件全部都是文件系统,如果对于文件系统调用了ioctl检查affinity info那么就会出现OER(27041)的报错。

问题是解决了,但是仍然有疑问。

是什么操作系统级别的设定(比如内核参数)或者存储级别的设定(比如PV或者VG的参数)导致必须要指定diskratio=0才能RMAN备份成功?

Leave a Reply

Your email address will not be published. Required fields are marked *