利用RMAN跨平台迁移数据库
1、数据文件字节排序
Oracle平台一般使用两种不同的字节排序方案(尾数格式)。
如果多个平台使用的字节排序方案不同,则需要在RMAN中使用convert命令来将表空间转换为目标平台上所需的格式。可以通过以下查询确定尾数格式:
select endian_format
from v$transportable_platform tp,v$database d
where tp.platform_name=d.platform_name;
2、使用RMAN转换表空间尾数格式
首先,创建保存转换文件副本的目录,接下来将希望转换的表空间设置为只读模式,然后,启动RMAN并使用新的convert tablespace命令。
rman target /
convert tablespace users to platform='AIX-Based Systems(64-bit)' db_file_name_convert='c:\oracle\oradata\betatwo','c:\oracle\admin\transport_aix';
也可以转换目标站点上的数据文件
rman target /
convert datafile='c:\oracle\oradata\betatwo\*' from platform='AIX-Based Systems(64-bit)' db_file_name_convert='c:\oracle\oradata\betatwo','c:\oracle\admin\transport_aix';
使用的平台名来自于v$transportable_platform视图的platform_name列。
3、跨平台移动数据库
Oracle Database 10g中的RMAN提供了全新的功能以帮助在尾数字节格式相同的平台之间移动数据库。convert database命令结合DBMS_TDP包可以减少在平台之间移动数据库的整体工作负载。操作过程如下:
(1)以只读方式打开数据库
startup mount;
alter database open read only;
(2)使用dbms_tdb.check_db进程来检查数据库状态。该程序应该在打开serveroutput命令时运行:
set serveroutput on;
declare
db_ready boolean;
begin
db_ready:=dbms_tdb.check_db('Microsoft Windows IA (32-bit)',dbms_tdb.skip_readonly);
end;
/
(3)使用dbms_tdb.check_external进程来标识外部对象:
set serveroutput on;
declare
external boolean;
begin
external:=dbms_tdb.check_external;
end;
/
(4)当数据库可以传送时,就可以使用RMAN的convert database命令。RMAN创建数据库移动所需的脚本,但不真正执行移动操作,而是创建移动所需的文件:
CONVERT DATABASE NEW DATABASE 'copydb' transport script 'c:\oracle\copydb\copyscripts' to platform 'Microsoft Windows IA (32-bit)';
可选参数db_file_name_convert允许用户为需要转换的数据文件定义目录:
CONVERT DATABASE NEW DATABASE 'copydb' transport script 'c:\oracle\copydb\copyscripts' to platform 'Microsoft Windows IA (32-bit)' db_file_name_convert 'c:\oracle\product\10.2.0\oradata\rob10r2','c:\oracle\newdbdest';
推荐阅读: