16.7.2 字节存储次序不同时的移植

如果在两个操作系统平台下数据文件的字节存储次序不同,那么在移植表空间时需要对数据格式进行转换。例如,要将Windows x86 64-bit平台下的一个表空间移植到AIX 64-bit平台下,就需要对数据文件进行转换。

转换数据文件格式的方法有两种,一种是在原来的数据库中进行转换,另一种方法是在对方数据库中进行转换。在原来的数据库中只能通过命令CONVERT TABLESPACE对整个表空间进行转换。例如,下面的命令是在Windows平台下对表空间tools进行转换的例子:


rman target sys/1234@source_db

RMAN>CONVERT TABLESPACE tools

TO PLATFORM'AIX-Based Systems(64-bit)'

FORMAT='d:\test\%U';


转换的结果是在指定的目录下产生新的数据文件,文件名称通过%U或其他变量指定。这种转换方法的好处是对整个表空间进行转换,不需要指定每个数据文件的名称,缺点是转换后的数据文件只能通过变量指定名称。需要注意的是,在对数据文件进行转换时,在RMAN命令中需要指定原来的数据库或者对方数据库的操作系统平台的完整名称。

将数据文件从原来的数据库复制到对方系统之后,在对方数据库中可以对单个的数据文件进行转换,转换的命令是CONVERT DATAFILE。例如,下面的命令是在对方数据库中对数据文件进行转换的例子:


rman target sys/1234@destination_db

RMAN>CONVERT DATAFILE

'/tmp/tools01.dbf','/tmp/tools02.dbf'

DB_FILE_NAME_CONVERT

'/tmp','/u01/app/base/orcl'

FROM PLATFORM'Windows x86 64-bit';


在对单个数据文件进行转换时,需要通过DB_FILE_NAME_CONVERT关键字指定转换之前和转换之后数据文件所在的目录。在上述例子中,数据文件在转换之前位于目录/tmp中,转换之后位于目录/u01/app/base/orcl中,文件名称不变。

在不同的操作系统之间,当数据文件的字节存储次序不同时,移植表空间的步骤如下:

1)在原来的数据库中将表空间的状态置为READ ONLY。

2)利用EXP命令将表空间的结构信息导出到元数据文件中。

3)在原来的数据库中对表空间进行格式转换,将转换以后的数据文件复制到对方系统中。或者将数据库文件复制到对方系统中之后,再进行格式转换。

4)在对方数据库中利用IMP命令将表空间导入。在导入时指定元数据文件和转换后的数据文件。

5)在原来的数据库中将表空间置为READ WRITE状态。

实际上,利用RMAN还可以在ASM磁盘组和文件系统之间复制文件。如果把数据库中的文件存储在ASM磁盘组中,在操作系统中是看不到这些文件的,当然也不能对它们进行复制等操作。利用RMAN可以把磁盘组中的文件复制到文件系统中,或者把操作系统中的文件复制到磁盘组中。例如,下面的命令用于把磁盘组DG1中的两个数据文件复制到/tmp目录中:


RMAN>CONVERT DATAFILE

'+dg1/orcl/datafile/tools01.dbf',

'+dg1/orcl/datafile/tools02.dbf'

DB_FILE_NAME_CONVERT

'+dg1/orcl/datafile','/tmp';