|
使用跨平台传输表空间,平台之间可以是不同的字节存储顺序(endian format)。当源平台和目的地平台的字节存储顺序不同,源平台要传输表空间下的数据文件的字节
存储顺序必须转换成和目的地平台相同。转换操作使用 RMAN CONVERT TABLESPACE 命令(在源平台转换)或者 CONVERT DATAFILE 命令(在目的地平台转换)。
注:CONVERT TABLESPACE命令必须用在源平台,CONVERT DATAFILE命令用在目的地平台。
1.在源平台使用 CONVERT TABLESPACE... TO PLATFORM 命令:
CONVERT TABLESPACE... TO PLATFORM命令用于在源平台转换表空间到目的地平台格式。在源平台数据库调用CONVERT TABLESPACE命令指定一个或更多表空间名称,
例如:RMAN> CONVERT TABLEPSACE ts_1, ts_2 ... TO PLATFORM 'platform_name';
platform_name支持的值可以从 V$TRANSPORTABLE_PLATFORM 查询到。在源平台必须转换整个表空间,不能只转换一个数据文件。
CONVERT TABLESPACE ... TO PLATFORM包含如下可选参数:
PARALLELISM n: 用于指定n个服务器会话并行执行转换工作,以提升性能。每个数据文件只能分配一个单独的服务器会话进行转换,因此,不能通过分配一个大并行度
转换单一数据文件来提升性能。
fileNameConversionSpec: 指定使用fileNameConversionSpec参数,用于对转换的数据文件生成新的文件名。
FORMAT formatSpec: 提供一个格式模板用于对转换的数据文件生成新的,唯一的文件名。如果没有指定FORMAT,RMAN使用和平台相关的目的地和格式。
下面在源平台转换表空间的例子:
1)设置传输表空间为只读模式
2)在V$TRANSPORTABLE_PLATFORM中查看目的地平台的名称
SELECT PLATFORM_ID, PLATFORM_NAME, ENDIAN_FORMAT
FROM V$TRANSPORTABLE_PLATFORM
WHERE UPPER(PLATFORM_NAME) LIKE 'LINUX';
针对Linux在PC上的PLATFORM_NAME是'Linux IA (32bit)'
3)使用CONVERT TABLESPACE转换命令
使用 RMAN 转换数据文件到目的地平台的字节存储顺序,FORMAT参数控制转换后数据文件的名称和位置:
RMAN> CONVERT TABLESPACE finance,hr
TO PLATFORM 'Linux IA (32-bit)'
FORMAT='/tmp/transport_linux/%U';
转换后的数据文件被放在/tmp/transport_linux目录,数据和目的地系统的字节存储顺序相同。
4)使用导出工具创建导出dump文件
5)移动转换后的文件和导出的dump文件到目的地平台主机
6)使用导入工具插入表空间到新数据库
7)修改表空间为读写模式
2.在目的地主机使用 CONVERT DATAFILE... FROM PLATFORM 命令:
CONVERT DATAFILE ... FROM PLATFORM用于在目的地平台转换源平台的表空间字节存储顺序。不能在目的地平台使用CONVERT TABLESPACE。
CONVERT DATAFILE 命令可以跟上一个或多个需要转换的数据文件,例如:
RMAN> CONVERT DATAFILE datafile_1, datafile_2 ...
FROM PLATFORM 'platform_name';
提供的FROM PLATFORM值必须匹配待转换数据文件的真实平台,否则RMAN返回一个错误,platform_name支持的值可以从V$TRANSPORTABLE_PLATFORM查询到。
PARALLELISM、FORMAT、fileNameConversionSpec参数和CONVERT TABLESPACE在源平台用法是相同的。
下面是在目的地平台转换数据文件的例子:
1)在源库将需要转换的表空间设置为只读模式,表空间对应的数据文件包括:
/tmp/transport_solaris/fin/fin01.dbf
/tmp/transport_solaris/fin/fin02.dbf
/tmp/transport_solaris/hr/hr01.dbf
/tmp/transport_solaris/hr/hr02.dbf
2)在源库使用导出工具创建dump文件
3)拷贝dump文件和数据文件到目的地
4)使用 RMAN CONVERT 命令转换数据文件到目标主机格式,将转换后的数据文件存放在/orahome/dbs目录
RMAN> CONVERT DATAFILE
'/tmp/transport_solaris/fin/fin01.dbf',
'/tmp/transport_solaris/fin/fin02.dbf',
'/tmp/transport_solaris/hr/hr01.dbf',
'/tmp/transport_solaris/hr/hr02.dbf'
DB_FILE_NAME_CONVERT
'/tmp/transport_solaris/fin','/orahome/dbs/fin',
'/tmp/transport_solaris/hr','/orahome/dbs/hr';
注意: a)FORMAT参数控制数据文件的名称和位置。
b)当在目的地平台转换数据文件时,必须使用FROM PLATFORM参数指定源平台。否则,RMAN将假设源和目的地平台字节存储顺序是相同的。
5)使用导入工具插入转换后的表空间到新的数据库
6)修改表空间为读写模式.
对于跨平台传输表空间而言,如果源平台和目的地平台的字节存储顺序是相同,那么可以不必执行CONVERT TABLESPACE或CONVERT DATAFILE进行转换,直接简单拷贝即可。
3.CONVERT TABLESPACE 和 CONVERT DATAFILE限制:
a)源和目的地数据库的COMPATIBLE初始化参数必须设置为10.0或者更高
b)不是所有源和目的地平台的组合都是支持的,确定源和目的地平台是否被支持需要查询V$TRANSPORTABLE_PLATFORM。如果源和目的地都在该视图列表中,那么
CONVERT 能用于一个平台到另一个平台的转换。
c)在10g版本,使用CONVERT命令将表空间传递到另一个平台之前必须至少一次被设置为读写模式
d)RMAN的endian转换不能处理用户自定义数据类型
e)10g之前的版本,CLOBs以可变长度字符集创建,并且依赖字节存储顺序存储,CONVERT 命令不能执行CLOBs的转换,RMAN捕获每个LOB字段的字节存储顺序,
传输它到目的地数据库。之后通过SQL层读写这个数据,基于两者之一的字节存储顺序正确翻译数据,如果表空间可写,那么基于相关字节存储顺序写数据
f)在Oracle Database 10g创建的CLOBs,存储在AL16UTF16字符集中,具有平台独立性
|
|
|