从10g开始,RMAN新增了CONVERT的语法,使得数据库文件可以跨版本复制,从这个特性开始,操作系统以及平台不再是数据库物理文件的限制了。
Oracle支持的可转换的平台可以在V$TRANSPORTABLE_PLATFORM视图中查询:
SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM;
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- ---------------------------------------- --------------
1 Solaris[tm] OE (32-bit) Big
2 Solaris[tm] OE (64-bit) Big
7 Microsoft Windows IA (32-bit) Little
10 Linux IA (32-bit) Little
6 AIX-Based Systems (64-bit) Big
3 HP-UX (64-bit) Big
5 HP Tru64 UNIX Little
4 HP-UX IA (64-bit) Big
11 Linux IA (64-bit) Little
15 HP Open VMS Little
8 Microsoft Windows IA (64-bit) Little
9 IBM zSeries Based Linux Big
13 Linux 64-bit for AMD Little
16 Apple Mac OS Big
12 Microsoft Windows 64-bit for AMD Little
17 Solaris Operating System (x86) Little
18 IBM Power Based Linux Big
20 Solaris Operating System (AMD64) Little
19 HP IA Open VMS Little
已选择19行。
Oracle支持将数据文件转换为这些平台上的数据文件格式。
SQL> host
$ rman target /
恢复管理器: Release 10.2.0.3.0 - Production on 星期四 3月 5 01:36:55 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: TESTRAC (DBID=4291216984)
RMAN> convert tablespace 'TEST' to platform 'Linux 64-bit for AMD'
2> format '/data/backup/%T_%n_%N.dbf';
启动 backup 于 05-3月 -09使用目标数据库控制文件替代恢复目录分配的通道: ORA_DISK_1通道 ORA_DISK_1: sid=310 实例=testrac1 devtype=DISK分配的通道: ORA_DISK_2通道 ORA_DISK_2: sid=292 实例=testrac2 devtype=DISK
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: backup 命令 (在 03/05/2009 01:40:55 上) 失败
RMAN-06599: 表空间 TEST 不是只读的
CONVERT要求目标表空间是只读的:
SQL> host
$ rman target /
恢复管理器: Release 10.2.0.3.0 - Production on 星期四 3月 5 01:42:20 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: TESTRAC (DBID=4291216984)
RMAN> convert tablespace 'TEST'
2> to platform 'Linux 64-bit for AMD'
3> format '/data1/backup/%T_%n_%N.dbf';
启动 backup 于 05-3月 -09使用通道 ORA_DISK_1使用通道 ORA_DISK_2通道 ORA_DISK_1: 启动数据文件转换输入数据文件 fno=00008 name=+DISK/testrac/datafile/test01.dbf已转换的数据文件 = /data1/backup/20090305_TESTRACx_TEST.dbf通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:07完成 backup 于 05-3月 -09
这个生成的文件20090305_TESTRACx_TEST.dbf文件就可以在Linux X86 for 64环境中进行迁移表空间的导入,或者指向备份恢复操作。
当然CONVERT语法远远不止上面提到的,可以进行数据文件、表空间甚至数据库的转换,同时各种限制条件也远远不只上面提到的,比如CONVERT数据库就不能直接跨越不同的编码方式。
在文档中提到CONVERT语法还有一个功能,由于绝大部分操作系统命令都无法直接访问ASM中的数据文件,因此可以利用CONVERT将ASM中的文件拷贝的操作系统中:
RMAN> convert tablespace 'TEST'
2> format '/data1/backup/test01.dbf';
启动 backup 于 05-3月 -09使用通道 ORA_DISK_1使用通道 ORA_DISK_2通道 ORA_DISK_1: 启动数据文件转换输入数据文件 fno=00008 name=+DISK/testrac/datafile/test01.dbf已转换的数据文件 = /data1/backup/test01.dbf通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:03完成 backup 于 05-3月 -09不过这种方式其实还不如直接使用RMAN的COPY命令,因为COPY命令没有将表空间置于只读状态的限制。