了解rman catalog的兼容性

几天前被问到关于rman catalog兼容性的问题,catalog所在数据库版本与目标数据库版本不同会有影响吗?在我概念当中catalog所在数据库的版本并不会影响rman catalog的使用,但catalog schema的版本却有着明确要求,至于具体的兼容关系就不清楚了。

查了下MOS找到文档<RMAN Compatibility Matrix>,这个文档解释地比较清楚,存在3个基本的原则:

  1. RMAN可执行文件的版本需要和target database目标数据库的版本一致(弱一致要求),具体的合法组合如下面列出的表格
  2. RMAN catalog schema版本必须大于等于RMAN可执行文件(强一致要求)
  3. RMAN catalog对target database目标数据库向后兼容,即支持早期版本的目标数据库

具体的可用版本组合:

Target/Auxiliary
Database
RMAN Executable Catalog Database Catalog Schema
8.1.7.4 8.1.7.4 >=8.1.7 8.1.7.4
8.1.7.4 8.1.7.4 >=8.1.7 >=9.0.1.4
9.0.1 9.0.1 >=8.1.7 >= RMAN executable
9.2.0 >=9.0.1.3 and <= Target database >=8.1.7 >= RMAN executable
10.1.0 >=9.0.1.3 and <= Target database >=9.0.1 >= RMAN executable
10.2.0 >=9.0.1.3 and <= target database >=9.0.1 >= RMAN executable
11.1.0 >=9.0.1.3 and <= target database >=10.2.0.3 (note 1) >= RMAN executable
11.2.0 >=9.0.1.3 and <= target database >=9.0.1 >= RMAN executable

从上表中可以看到除去target database为11.1.0时因为Bug 6756872 – RMAN REGISTER OF 11G TARGET INTO 10G CATALOG FAILS WITH ORA-04028,要求catalog所在数据库大于10.2.0.3外,对catalog所在数据库的版本没有一个强要求,一般10gR2都可以满足兼容性。而对于catalog schema的版本则有着明确的高版本要求,究其原因是RMAN使用的DBMS_RCVMAN内置包要求与之版本一致的恢复目录表结构recovery catalog tables,如果达不到这种要求,那么可能出现rman 20299错误:

[maclean@rh2 ~]$ oerr rman 20299
20299, 1, "DBMS_RCVMAN package not compatible with the recovery catalog"
// *Cause:  The version of the recovery catalog tables does not work with this
//          version of the DBMS_RCVMAN package.
// *Action: Check that the recovery catalog packages and schema are installed
//          correctly.  The UPGRADE CATALOG command can be used to upgrade
//          the recovery catalog tables and packages to the most current
//          version.
//